Hirdetés
- CPU léghűtés kibeszélő
- Milyen notebookot vegyek?
- Mégis mi értelme az Xbox PC-nek, ha limitálja a hardverválasztékot?
- Nem okoz az adattárolón hibát a Windows 11 augusztusi frissítése
- IFA 2025: Éles hangon
- Fejhallgató erősítő és DAC topik
- Apple MacBook
- Milyen TV-t vegyek?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- TCL LCD és LED TV-k
Új hozzászólás Aktív témák
-
Jim-Y
veterán
válasz
Speeedfire #2099 üzenetére
Mi az a content?
-
Speeedfire
félisten
válasz
Sk8erPeter #2096 üzenetére
Hát, nem tudtam hogy nevezzem el, így ez jött ki.
Mindenesetre most megy.Más kérdés:
Hogy lehet valamelyik tooltip plugin-t használni az on segítségével? Nekem nem akart menni.
Próbáltam a jquery ui és a qtip plugineket is.$('#content').on('change', '.erre_kellene_tooltip', function(){
$(this).tooltip();
}); -
szmegma
aktív tag
válasz
Sk8erPeter #2095 üzenetére
Lecsereltem, a TT elemet A elemre es total meghalt a kod. Fogalmam sincs miert.
Az ajax mar le sem fut, szerintem a get metodus fut le kattintaskor es nem az ajax. Azt viszont mar nem tudom, hogyan kell rakenyszeriteni, hogy aktiv JS eseten a JS fusson le es ne a PHP.
UJ KOD -
Sk8erPeter
nagyúr
válasz
Speeedfire #2092 üzenetére
"Hogyan tudok object névben változót használni?"
Mi az az "object név"?Ilyenről most hallok először.
var ch_id = $(this).attr('ch_id');
var ch_limit = $(this).attr('ch_limit');
var post_ch_id = "CampaignChannels["+index+"][CHANNELS_ID]";
var post_ch_limit = "CampaignChannels["+index+"][CHANNELS_LIMIT]";
var post_channels = {post_ch_id : ch_id, post_ch_limit : ch_limit};Ebben a kódodban igazából a post_ch_id és post_ch_limit változókat egyáltalán nem is használtad fel.
Ami ebben az esetben működne, csak nagyon ronda:
var post_channels = {post_ch_id : post_ch_id, post_ch_limit : post_ch_limit}; -
Sk8erPeter
nagyúr
válasz
szmegma #2091 üzenetére
Jónak tűnik!
Még amibe bele lehet kötni, hogy ha kikapcsolom a JS-t az oldalon, akkor megint csak nem működik, mert ezeknek a lapozóelemeknek LINKEKNEK kellene lenniük, amik az adott oldalra mutatnak.
Pl.
<nav>
<ul>
<li><a href="valami.php?page=1">1</a></li>
<li><a href="valami.php?page=2">2</a></li>
<li><a href="valami.php?page=3">3</a></li>
...
</ul>
</nav>Ezenkívül továbbra sem értem, miért ezt a <tt> elemet használod, amikor az rossz.
Lehetne helyette pl. a fenti szerkezet.
Meg az picit zavaró, hogy nincs előző-következő oldalra mutató link, a számok MELLETT. Ha pedig valaki mondjuk egyből az 5. oldalra akarna ugrani, akkor zavaró, hogy előtte végig kell kattintgatnia a számokat, hogy végre az a link is megjelenjen.
De egyébként jó irányba haladsz! -
Jim-Y
veterán
válasz
Speeedfire #2092 üzenetére
Ellenőrizd, hogy channels tömb tagjai (objectek) ne tartamazzanak `nem stringet`
Például:
var channels = [{one: 1, two: 2, three: 3},{egy: "egy", ketto: "ketto", harom: "harom"}];
var str = $.param(channels[0]);
console.log(str); //undefinedde,
var channels = [{one: "1", two: "2", three: "3"},{egy: "egy", ketto: "ketto", harom: "harom"}];
var str = $.param(channels[0]);
console.log(str); //one=1&two=2&three=3Mondjuk, szerintem a te adataid automatikusan stringgé kéne, hogy kovertálódjanak, szoval lehet nem ez a baj, de egy tippnek elment
-
Speeedfire
félisten
Hogyan tudok object névben változót használni?
$('#Channels_added tbody tr').each(function(index){
var ch_id = $(this).attr('ch_id');
var ch_limit = $(this).attr('ch_limit');
var post_ch_id = "CampaignChannels["+index+"][CHANNELS_ID]";
var post_ch_limit = "CampaignChannels["+index+"][CHANNELS_LIMIT]";
var post_channels = {post_ch_id : ch_id, post_ch_limit : ch_limit};
channels.push(post_channels);
form_data = form_data + '&' + $.param(channels[index]);
});Ez nem tettszik neki, nem helyettesíti be a változót.
-
szmegma
aktív tag
válasz
Sk8erPeter #2090 üzenetére
Ez ugy mukodik "allitolag", ahogy most leirtad, bar a "...meg a lapozót is JS-sel." reszben nem vagyok biztos, hogy az en kodom is igy frissiti a lapozot.
JS frissiti az tuti, csak vmiert ugy erzem, hogy te nem igy gondoltad. -
Sk8erPeter
nagyúr
válasz
szmegma #2089 üzenetére
Yesss! Asszem kezdjük érteni egymást.
Ja, ilyesmire gondoltam, hogy így kellene megcsinálnod először (nem "kértem", mert nekem nincs rá szükségem
csak javasoltam, hogy először ezt csináld meg működőképesre, ne az AJAX-szal foglalkozz, amíg még az alapja sem működik), és most már akkor ezt lehet átültetni JS-re. A lényege ennek az egésznek éppen ez volt: először működjön JS nélkül, azután már foglalkozhatsz az AJAX-osítással.
Ahhoz pedig kellene egy olyan oldal is, ahol JSON-nel szolgáltatod az adatokat (tartalom, lapozó hol tart, hány lap van összesen, ill. esetleg egyéb adatok, ami kellhet; igazából ezt elvileg már a json_encode()-dal elvileg megcsináltad, ha minden igaz), hasonlóan egy REST API-féleséghez. Aztán erre az URL-re elküldeni egy GET requestet, hogy ezt meg azt az oldalt kéred (ezt az $.ajax() metódus data attribútumában elküldeni). Ha megkaptad, akkor a kapott adatok alapján frissíteni az oldal tartalmi részét, meg a lapozót is JS-sel. -
szmegma
aktív tag
válasz
Sk8erPeter #2080 üzenetére
Hiába mutogatod nekem a KÜLÖN lapozódat, az senkit sem érdekel, mert az úgy teljesen értelmetlen. Lásd a test4.php?pg=5 és hasonló címeket, amiknél maga a tartalom NEM jelenik meg lapozva, CSAK maga a lapozó. Azzal mit kezdesz? A felhasználó mit kezd vele?
Szerintem mar kezdem erteni, hol siklott felre a beszelgetes. En ugy ertettem, hogy csak maga a lapozo PHP kodja mukodjon JS nelkul. Egyebkent amit latsz lapozo az tenyleg semmi mas csak PHP-s lapozo kod, nem tettem bele megjelenitendo tartalmat, csak mivel rosszul ertettem amit kertel, ezert magat csak a lapozot keszitettem el bizonyitaskent, hogy mukodik az.
UJ LAPOZO <= Igy gondoltad? Ebben semmi JS nincs ahogy kerted, csak natur PHP es a megjelenitendo tartalom. Ugyanaz a kod mint korabban es nalam mukodik.
Ha meg mindig nem ez az amire gondolsz, hogy mukodie kellene JS nelkul, akkor legy szives ird le pontosabban, hogy mit nem akarok az istenert sem megerteni.
-
Male
nagyúr
válasz
Sk8erPeter #2080 üzenetére
OK, szóval az ÉS volt a helyes akkor
Kombinálnom még nem nagyon kellett így.
Vajon tempóban van különbség, hogyha ID majd hasClass() -t használok erre, vagy ha ezen a módon ID.class -szal próbálom meg kiválasztani?
-
Sk8erPeter
nagyúr
Ja, de félre ne értsd, nem téged blamállak, ezeket csak azért írom le, hogy legyen némi korrekció is.
Legalábbis én szeretem, ha kódomban lévő hibákat korrigálják, mert abból én is tanulok, meg másnak sem a rossz infó marad meg.
Amúgy sejtettem, hogy csak gyorsan összedobáltad, mondom, csak korrekció gyanánt írtam. -
Jim-Y
veterán
válasz
Sk8erPeter #2082 üzenetére
Igen, sajnos azzal tisztában vagyok, hogy isset kellett volna, a GET-et pedig azért használtam, mert írtátok, hogy azt célszerű a bookmarkolhatóság miatt, egyébként pedig sajnos nem vagyok php guru
Próbáltam is jelezni a linkelésemnél, hogy ez csak egy skicc, arra irányult, hogy csak egy bizonyos tartalom menjen vissza, és hogy nem tilos több ajaxot is felhasználni.
És persze igazad van, éles helyzetben ennél sokkal átgondoltabb kód kéne, de most úgysem az volt a cél.
-
Sk8erPeter
nagyúr
Oh, sorry, azt a részt már elfelejtettem megnézni.
Benéztem.
Az viszont akkor is hiba, hogy egyszer $_POST['action']-t használsz, máskor pedig $_GET['action']-t.
Na meg azt is ellenőrizni kell, hogy létezik-e egyáltalán az adott index. Gondolom tudod, de ha már szemléltető kód...
Szóval:
$action = isset($_POST['action']);
HELYETT pl.
$action = isset($_GET['action']) ? $_GET['action'] : NULL;innentől kezdve pedig csak az $action értékét vizsgálgatni (NULL-lal egyenlő-e, ha nem, akkor meg volt adva action, aztán jöhet akár egy switch-case is, vagy egyre komplexebb dolgok
-
Jim-Y
veterán
válasz
Sk8erPeter #2080 üzenetére
Én ott csak egy stringet küldök vissza, nem a tömböt. $oldalak[$page];
Amugy meg azért tömb, mert nem akartam még az adatbázissal is foglalkozni
-
Sk8erPeter
nagyúr
válasz
szmegma #2071 üzenetére
"akkor a PHP lapozo kuka es mehet az egesz jQuery-be? Erre irtad nekem, hogy felreertem."
Igen, mert még mindig tartom, hogy félreértetted.
Na, akkor még egyszer, másképp: először működjön a lapozód úgy, hogy semmiféle JS-kódot nem erőltetsz.
Hiába mutogatod nekem a KÜLÖN lapozódat, az senkit sem érdekel, mert az úgy teljesen értelmetlen. Lásd a test4.php?pg=5 és hasonló címeket, amiknél maga a tartalom NEM jelenik meg lapozva, CSAK maga a lapozó. Azzal mit kezdesz? A felhasználó mit kezd vele?
Gondolj bele, ez olyan, mintha lenne egy könyved, amit két részletben kapnál: külön megkapnád az oldalszámokat, aztán külön a tartalmat. Rakd össze a kettőt. Amit mutogatsz nekem, az olyan, mintha a könyvből csak az oldalszámokat mutogatnád. Funkciótlan, értelmetlen.
Tehát a KOMPLETT oldal a lapozóval együtt (!!) először működjön JS nélkül.
Aztán az egész működését szépen átültetheted JS-be, ettől még kezelheted totálisan függetlenül a lapozót a tartalomtól!! Megközelítés kérdése.
Tehát lehet úgy, hogy tartalmat kiíratod, lapozót kiíratod, aztán JS-sel pedig külön-külön frissítgeted a lapozót a tartalomtól függően.
Amit Jim-Y itt mutatott neked, annak megint nem tudom, mi értelme, mert ott összegyűjti az oldalakat egy tömbbe:$oldalak = array();
$oldalak[1] = "Elso oldal";
$oldalak[2] = "Masodik oldal";
$oldalak[3] = "Harmadik oldal";
$oldalak[4] = "Negyedik oldal";
$oldalak[5] = "Otodik oldal";Hogy mi értelme van ezeket elküldeni egyben - amikor pont arról volt szó, hogy a tartalmak legyenek különbontva, csak az legyen elküldve a kliensnek, amire szüksége van -, az nekem megint csak homály. De majd megírja.
Igazából elég, ha megnézel egy jó lapozós oldalt úgy, hogy kikapcsolod a JavaScriptet, úgy biztos jobban meg fogod érteni.
Tehát a teljes oldalad úgy működjön, hogy query stringként megadod az aktuális oldalszámot. NE csak külön a lapozó!
Ha még mindig nem világos, akkor inkább kérdezz vissza, hogy egy nyelvet beszéljünk.A lényeg egy mondatban: ne boncold széjjel a lapozódat az oldal érdemi részétől, mert értelmetlen, a felhasználó úgyis egy requestben fogja lekérni, nem lesz kíváncsi külön a lapozódra, a tartalommal együtt manipuláld.
=====================================================
(#2078) Male :
jól írtad először, természetesen ÉS-kapcsolat van a selectoroknál.
Általában egyébként felesleges az id mellé még a class-t is hozzácsapni, de előfordulhat eset, amikor még pontosabban akarja specifikálni az ember, és csak akkor akarja manipulálni az adott elemet, ha mondjuk az adott id-jú elem még rendelkezik egy megadott class-szal is. -
martonx
veterán
válasz
Sk8erPeter #2070 üzenetére
jaja, lusta voltam elővenni a dokumentációt, gondoltam a segítséget kérő kolléga ezt már megtette előttem, de tévedtem. Ránézésre azért kapásból gyanús volt az a sor.
Nem sötét ő, elnézést is kérek a durva célzásomért, csak nem szeret dokumentációt olvasni, és aszerint dolgozni. Inkább kérdezget, hogy aztán megmondhassa, hogy úgyis neki van igaza -
Male
nagyúr
válasz
szmegma #2077 üzenetére
Jó az, csak még össze kell hoznod, hogyha JS van, akkor JS töltse az új tartalmat, ha nincs, akkor pedig éljenek a linkek.
Nem nagyon tudok lapozó témában nyilatkozni, mert egy általam nagyon nem kedvelt rész (se felhasználóként, se fejlesztőként), és ha csak lehet elkerülöm... főleg, hogyha JS-sel töltöd át, akkor még a címsorban is frissíteni kéne a linket, hogy aki onnan kimásolva küldi el valakinek, az egyből oda juthasson... Ilyen JS-es lapozást pl csak kis dobozokban csinálnék (vagy ha valami átmenetek kellenek a váltásnál), ha szinte az egész oldalt lecseréled, akkor hagyományos módon oldanám inkább meg. (Persze a megrendelő dönti el végső soron, hogy mit akar az oldalra, és az hogyan működjön.)
Az előzőmhöz még: az ÉS kapcsolat helyett lehet, hogy VAGY van... még soha nem kellett vegyítenem selectornál classt és ID-t.... de még megnézem, egyszer jól jöhet
-
Male
nagyúr
válasz
szmegma #2075 üzenetére
A HTML spec.nek tudtommal megfelel, ha van az ID-ben pont. Ellenben a jQuery selector miatt gondot okoz... ugye megadhatod úgy, hogy "#akármiid", így ID-re keres, de megadhatod úgy is, hogy ".valamiclass", így pedig az adott class-u elemeket választod ki. Namost amit te beírtál, hogy "#lap.1" az a lap ID-jű ÉS 1 classal rendelkező elemet kereste, ami persze nincs az oldalon.
-
szmegma
aktív tag
Az itteni kodbol kihagytam igaz, de a szerveren ott van a # es megsem mukodik. Nezd meg a kodot. Igen van pont az id-ben: <tt id="lap.1">1</tt>
Az pedig nem működik továbbra sem JS nélkül... kapcsold már ki a böngésződben a JS futtatást, és próbáld meg. Az egy dolog, hogy a PHP-d $_GET-ből is nézi az oldal azonosítóját, de ha semmi link nincs, ami így hívná meg a tartalmat, akkor az a lapozó nem működik JS nélkül.
Nem ez volt a kitetel, hanem, hogy a lapozo mukodjon JS nelkul is, akkor pedig egyertelmu, hogy kell a link. Mindjart beteszem, pill: Lapozo linkkel NO JS -
Male
nagyúr
válasz
szmegma #2069 üzenetére
A második, csak ne hagyd le a #-et, és csak azután csináld, hogy az új tartalom ottvan már, tehát meg fogja találni. (callbackbe beteszed és kész) Már ha cseréled ezt a lapozót is még mindig... nem néztem meg. (persze ha cseréled, és így tolod ki PHP-val, akkor meg eleve benne lehetne már az adott elemnél ez a class... totál felesleges kiküldeni aktív nélkül + elküldeni melyik az aktív, aztán ott kikerestetni, és aktívvá tenni)
Bár ez eleve gyanúsan néz ki: "lap."+lap
Biztos van az ID-ben pont is?#2071: Az pedig nem működik továbbra sem JS nélkül... kapcsold már ki a böngésződben a JS futtatást, és próbáld meg. Az egy dolog, hogy a PHP-d $_GET-ből is nézi az oldal azonosítóját, de ha semmi link nincs, ami így hívná meg a tartalmat, akkor az a lapozó nem működik JS nélkül.
-
szmegma
aktív tag
válasz
Sk8erPeter #2068 üzenetére
martonx kollega sotetezett te pedig igazat adtal neki
Pusztan csak PHP-val mukodo lapozo
Mar korabban is irtam, hogy en nem tudom azert jottem segitseget kerni, de nem en kezdtem ellensegeskedni.
Jim-Y is irta, hogy "...miért nem jó, ha magát a lapozót te állítod össze kliens oldalon js-el..." amire en azt valaszoltam, hogy nekem tokeletes lenne, ha tudnam, hogyan kivitelezheto. Irt egy jo kis kodot, amire irtam, hogy "...ha eszembe jutott volna, akkor eleve ugy csinalom."
En csak tanulni jottem ide es pont, hogy a te hosszu iromanyodbol tanultam a legtobbet, 99%-ban neked koszonhetem, hogy mukodik a kod: JSON + .ON()
Csak nem ertem, miert kell ellensegeskedni egy kevesebb tudasu emberrel, velem.
En soha nem irtam, hogy en jobban tudom, hulyesegeket beszeltek, sot: Utolso bekezdes"Szoval akkor megis csak nekem volt igazam" reszt kiforgatottnak erzem; ezt csak arra irtam,hogy a trisztan94 altal felhozott otlet szerint Jim-Y keszitett egy kodot, amit en korabban megemlitettem, hogy akkor a PHP lapozo kuka es mehet az egesz jQuery-be? Erre irtad nekem, hogy felreertem.
-
Sk8erPeter
nagyúr
válasz
martonx #2066 üzenetére
"Ez így nekem gyanús: $("tt").on({... bár elvileg ennek is működnie kellene."
Igazából nem is kellene úgy működnie, ahogy ő megadta, tehát így:
$("tt").on({
click: function(){
..............
}
});kétféle paraméterezés:
".on( events [, selector ] [, data ], handler(eventObject) )
events
Type: String
One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".
...
.on( events [, selector ] [, data ] )
events
Type: PlainObject
An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s)." -
szmegma
aktív tag
válasz
martonx #2066 üzenetére
Ott a pont!
Az volt a hiba, mar mukodik a lapozo is.Viszont amit meg nem ertek, hogy ha
$("#paginate").html(response.paginate).find("#lap."+lap).addClass("activate");
vagy
$("lap."+lap).addClass("activate");
koddal probalok class-t adni a kattintott lapszamnak, miert nem cselekedi meg?
Az eddigiek alapjan arra tudok gondolni, hogy megint az ujratoltes miatt lehet vmi gubanc?
Szoval erre is az .on() fuggvenyt kell hasznalni? -
Sk8erPeter
nagyúr
válasz
szmegma #2067 üzenetére
"Szoval akkor megis csak nekem volt igazam."
Kár, hogy nem igazán. Terveztem neked írni ismét egy hosszabb választ, hátha sikerül közös nevezőre jutni, és megérted a szempontokat, de ezután a válaszod után úgy látom, hogy nem igazán érné meg ezzel töltenem az időt. Igazából a múltkori, bőlére eresztett válaszból sem tudom, mi jött át, pedig azért arra is szántam bőven időt, hogy megírjam, hogy sikerüljön rávilágítanom pár dologra, hátha hasznát veszed, és jól fog jönni a jövőben.Egyébként én sehol nem "sötéteztelek le", ha már nekem szántad a legutóbbi választ.
Majd ha megmutatod nekem, hogy működik a lapozód a test3.php oldaladon kikapcsolt JavaScripttel is, akkor majd beszélhetünk a továbbiakról. (Mondjuk ahogy jelenleg elnézem, a sima JS-es megoldás sem működik.)
Viszont a "csak azért is nekem volt/van/lesz igazam, hiába ugattok"-jellegű válaszodból úgy tűnik, nem igazán vagy vevő a közös konstruktív feladat-megoldásra, pedig hidd el, nekem aztán nem érdekem megoldani a te feladatodat, mégis segítettem, de én nem erőltetem, ha te úgyis jobban tudod. -
szmegma
aktív tag
Nahh pont errol beszeltem a #2055-os posztomban, mivel trisztan94 felhozott egy otletet, amire en azt irtam, hogy:
"Ehhez a megoldashoz szerintem az egesz lapozot jQuery-ben kellene megirni, mivel jelenleg a lapozo PHP-s, es a script visszakuldott id-je alapjan azonositja a lap szamat."
Erre Sk8erPeter (#2058) azt irta, hogy: "Félreérted."
Szoval akkor megis csak nekem volt igazam.Amiben viszont nektek volt igazatok, hogy feleslegesen kuldtem olyan adatot el, amit nem kellett volna es utana pedig szuresre kenyszerultem, mivel tele volt minden szarral a visszatero adat.
Ezzel terhelve a szervert, a klienst es magam mivel nem is mukodott.
Ezt megtanultam, koszonom nektek! -
szmegma
aktív tag
Amugy az miért nem jó, ha magát a lapozót te állítod össze kliens oldalon js-el, úgy, hogy ajaxxal lekéred a php fájltól, hogy hány megjelenítendő oldalad van, azt javascriptben feldolgozod, és csak a tartalmat kéred le a szervertől lapozásra?
Egy szoval sem mondtam, hogy nem jo, ha eszembe jutott volna, akkor eleve ugy csinalom.Most megyek melozni, ha haza jovok megprobalom amit linkeltel megoldast atultetni. Koszi.
-
Jim-Y
veterán
válasz
szmegma #2062 üzenetére
Amugy az miért nem jó, ha magát a lapozót te állítod össze kliens oldalon js-el, úgy, hogy ajaxxal lekéred a php fájltól, hogy hány megjelenítendő oldalad van, azt javascriptben feldolgozod, és csak a tartalmat kéred le a szervertől lapozásra?
Sok hiba van benne, illetve joe editorban a szerveren írtam meg, nem akartam scpzni
Ez csak egy skicc, de látszik, hogy mire gondolok.
-
Male
nagyúr
válasz
szmegma #2062 üzenetére
Gondolom azért mondja, mert JS nélkül sehol nincs belinkelve a többi oldal... ( ha igen, akkor bocs, nem néztem meg alaposan az oldalt )
Amúgy ha oldalakat töltesz be, akkor használhatod a .load() -ot is. (rövidebb, és kezdetben könnyebb szerintem)
Plusz a lapozó részt nem biztos, hogy célszerű újra tölteni, annak a módosítását JS-ben is elintézheted. -
szmegma
aktív tag
válasz
Sk8erPeter #2058 üzenetére
Elnezeseteket kerem a sotetseg leple alol, hogy nem szulettem tobb esszel, de szerintem nem szegyen az, ha mindent megteszek, hogy fejlesszem a hianyossagaimat.
Elkeszitettem a te es a tobbiek otlete alapjan az uj kodot, amiben a lapozo szinten csak az elso kattintasig mukodik. Igen, hasznaltam az .on() fuggvenyt, mielott megkerdezned:
UJ KOD <= Forras:TEST3 es FUNC
Raadasul, igy mar ket fajlra van szuksegem (test3.php es func.php), pedig szeretnem ugy megoldani, hogy egy fajl eleg legyen.Apropo, az irtad, hogy az en lapozom PHP resze nem mukodik. Akkor nalam miert jo?
LAPOZO
A szamot cserelgesd manualisan es lathatod, hogy rendben van.Epito jellegu kritikat szivesen fogadom, mint korabban, de az ilyen "lesotetezest" inkabb hagyjuk.
Szoval meg mindig en rontok el vmit vhol? Koszonom. -
trisztan94
őstag
válasz
Sk8erPeter #2058 üzenetére
Minden tizsteletem a tiéd
-
martonx
veterán
Amíg kollektívan próbáltok fényt gyújtani a sötétségben, mellékesen jegyzem meg, hogy nagyon csendben, de kijött a jquery 2.0
Kemény 12%-al lett csak kisebb, mint az 1.9.1, ennek megfelelően a sebessége sem gyorsult észrevehetően.Ez jóval kevesebb, mint amit vártam.
-
Sk8erPeter
nagyúr
válasz
szmegma #2044 üzenetére
"Termeszetesen tudom, hogy a $("span").html(returned_data); feltolti az osszes span-t a returned_data tartalmaval"
Na, akkor máris megvan az indok, miért ne csináld úgy, ahogy csináltad.Hülyebiztosra kell elkészíteni egy kódot, nem arra számítani, hogy "jó az vidékre"...
"am az adott lapon csak ez az egy span van"
Ne viccelj már, amit itt megmutattál, abban a kódban egész pontosan 11 span is volt:
http://jsfiddle.net/jUECg/
Bár gondolom arra gondolsz, hogy ez a tartalom fog lecserélődni, a spanekkel együtt... de akkor is szar ez a kód így, nem szívatásból mondom, hanem azért, mert ezzel problémáid lesznek később, ha így kódolsz.
Szóval specifikáld jobban, milyen DOM-elemet szeretnél manipulálni, legyen beszédes a kódod!!
Vonatkozik ez tehát a spanre és a tt-re is.Miért ragaszkodsz a <tt> elemhez?
https://developer.mozilla.org/en-US/docs/HTML/Element/tt
ez már "obsolete", szóval ne használd. Ha teletype textre van szükséged, használj CSS-t. Amúgy is, szemantikailag is hibás a lapozó céljára <tt> elemet használni.Ahogy már a többiek is elmondták, nagyon rossz gyakorlat az, hogy a szerverről rengeteg felesleges adatot elküldesz a kliensnek, olyat is, amire nem kíváncsi, aztán kliensoldalon szűröd. Ezt a szokást felejtsd el örökre, csupán jótanács.
Azt add vissza a kliensnek szerveroldalról, amire kíváncsi volt, és aminek érdemi funkciója van, ne többet, ne kevesebbet.
"Valamiert stingnek latja a visszatero tartalmat es nem objectnek, ezert syntax errort dob."
Érdemes olvasgatni a dokumentációt, ha problémával találkozol a kódod működése során, és nem érted, miért...
http://api.jquery.com/jQuery.ajax/
dataType
...
"html": Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.Azt pedig a többiek már jól leírták, hogy a szervertől elkérendő adatokat szűrheted úgy, hogy megmondod neki, mit küldjön vissza, mégpedig a data-val, amire Jim-Y már mutatott neked példát.
Van példa a hivatalos oldalon is:
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John", location: "Boston" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});Ezt PHP-val a $_POST tömb részeként érheted el: $_POST[''name] és $_POST['location'], mivel meg lett adva, hogy POST-metódussal legyenek elküldve az adatok.
(#2052) szmegma
"Ez a POST-os megoldas nem jo, ui. akkor az "Utolsó frissítés: 2013 April 21." reszt torli a BODY-bol."
Nem a POST-tal való elküldéssel van a baj, hanem azzal, ahogyan megoldod. Egyébként lapozót NEM POST-tal szokás megoldani, hanem GET-metódussal! Így az URL könyvjelzőzhető, elküldhető másnak, és így tovább."Egyebkent miert baj, hogy a visszatero adatot szeretnem szurni? Ezert lenne a filter() es find() fuggveny nem?"
Adatszűrésre való, de nem arra, hogy a szervertől nyugodtan visszadobálj sokkal több adatot, mint amennyi kell, és aztán azt szűrögesd, azzal csak szívatod magad, a szerveredet és a klienst is. Felesleges terhelés.(#2055) szmegma
"Ehhez a megoldashoz szerintem az egesz lapozot jQuery-ben kellene megirni, mivel jelenleg a lapozo PHP-s, es a script visszakuldott id-je alapjan azonositja a lap szamat."
Félreérted. A lapozó először legyen úgy elkészítve, hogy JavaScript nélkül is működjön. Ezt tesztelgesd, és miután sikerült, azután az egészet lehet AJAX-osra megírni. Kipróbáltam, jelenleg egyáltalán nem működik JavaScript nélkül. Azért is fontos, hogy először úgy is működjön, mert akkor onnantól csak az egészet ugyanúgy át kell ültetni JavaScriptre, és megvagy.A lapozót az alján az AJAX-kérés után frissítened kell a szervertől visszakapott adatok alapján - amire az lesz a legegyszerűbb megoldás, ami amúgy is javasolt, hogy JSON-ben küldd vissza az adatokat a kliensnek a szervertől! Így mindenféle adatot tök egyszerűen ki tudsz nyerni a kliensoldalon.
A jelenlegi lapozód azért nem működik, mert az első lapbetöltéskor arra a lapozóelemnek a click eseményére iratkozol fel (a nálad látható $("tt").click(function(){})-nel), amit aztán eltüntetsz a DOM-ból az első AJAX-lekérés után, így mivel törlöd azt az elemet, az új lapozóelem click eseményére ismét fel kellene iratkoznod - erre való a jQuery.on():
http://api.jquery.com/on/A szervertől való JSON-adat visszaadására pedig vegyünk egy példát egyszerű spagettikóddal:
<?php
// blablabla...............
$dataToReturn = array();
$dataToReturn['status'] = false;
$dataToReturn['message'] = '';
$dataToReturn['page_nr'] = NULL;
$dataToReturn['data'] = NULL;
// na itt lekéred az adatot adatbázisból...
// viizsgálgatod, mi lett beállítva a $_POST tömbbe, megvan-e minden, ami kell az adatok visszaadásához, stb.
// ha volt valami gebasz, dobsz egy exceptiont, lekezeled, beállítod a felhasználóbarát hibaüzenetet a $dataToReturn['message']-be
if(para_volt) { // itt valami tisztességes kivételkezelésnek kéne lennie
$dataToReturn['status'] = false;
$dataToReturn['message'] = 'Para van...';
}
// egyébként meg a statust állíthatod true-ra:
// siker...
else {
$dataToReturn['status'] = true;
$dataToReturn['message'] = 'Sikeres blabla...';
$dataToReturn['data'] = '<p>ezmegaz</p>';
$dataToReturn['page_nr'] = 42;
}
echo json_encode($dataToReturn);
exit(0);aztán jQuery-vel tök egyszerűen lekezeled:
$.ajax({
type: "GET",
dataType: "json"
url: "valami.php",
data: { page: 12, akarmi: "asdasd" }
success : function(response) {
if(response.status == false) {
// hiba volt, kiírjuk, mondjuk a #content divbe, tételezzük fel, h van olyan
$('#content').text(response.message);
return false;
}
// egyébként meg sikeres volt a dolog
$('#content').html(response.data);
// mondjuk valahol frissíted a page_nr-t (csak példa)
$('#actual_page_nr').text(response.page_nr);
}
});Tényleg csak szemléltető kód, de szerintem (remélem) érthető, ha van kapcsolódó kérdésed, tedd fel nyugodtan.
-
szmegma
aktív tag
<?
$max = 12;
if(isset($_POST['pg'])){
$num=$_POST['pg']-1;
$pg=$_POST['pg'];
}
else{
$num=0;
$pg=1;
}
$begin=$pg-1;
while($begin<1)
$begin++;
$end=$pg+1;
while($end>$max)
$end--;
for($j=1;$j<2;$j++){
echo'<tt id="lap.'.$j.'">'.$j.'</tt>';
}
if($pg>3){
echo'...';
}
for($i=$begin;$i<=$end;$i++){
if($i>1&&$i<($max)){
echo'<tt id="lap.'.$i.'">'.$i.'</tt>';
}
}
if($pg<($max-2)){
echo'...';
}
for($j=($max);$j<($max+1);$j++){
echo'<tt id="lap.'.$j.'">'.$j.'</tt>';
}
?> -
szmegma
aktív tag
Jim-Y -> Ott van a test link, azt szeretnem megoldani, hogy mukodjon. Megnezted a linket? Az elso kattintas erejeig mukodik, utana a lapozo inaktivva valik a kattintasra.
trisztan94 -> Szűrés nélkül, ha csak arra kérsz kérést amire ténylegesen szükséged van:
Elküldi a kérést PHP-nak, ami feldolgozza azt amit mondtál neki, visszaküldi a scriptnek azt a specifikus dolgot amit kértél, a script meg beülteti a html-be.
Ertem a PHP-t, de hiaba irok ra egy fuggvenyt, hogy csak a szukseges adatokat kuldje vissza, a lapozo reszt ugy is ujra kell tolteni, hogy valtozzon az uj adatoknak megfeleloen. Ahogy pedig mondtad, ha ujra toltom, pont attol valik inaktivva.Amúgy szerintem azért válik inaktívvá a lapoztatás mert azt is minden kérés után újra betöltöd, azt külön kéne rakni az ajaxtól és egy változót létrehozni php-ban, ami visszaküldi a scriptnek, hogy hanyadik oldal volt előbb nyitva, vagy valami ilyesmit és onnantól kezdve gyerekjáték.
Ehhez a megoldashoz szerintem az egesz lapozot jQuery-ben kellene megirni, mivel jelenleg a lapozo PHP-s, es a script visszakuldott id-je alapjan azonositja a lap szamat.Ettol fuggetlenul nem zarkozom el attol, amit irtal; lehet en nem latom a fatol az erdot es neked van igazad, hogy a PHP-s fuggvennyel csak azt kuldjem vissza, amit frissiteni akarok. Viszont meg mindig nem ertem, hogyan fog valtozni igy a lapozo elrendezese.
-
Jim-Y
veterán
válasz
trisztan94 #2053 üzenetére
Az egész zavaros, szerintem egyszerűbb lenne, ha leírná, hogy alapból mit szeretne, és akkor arra adnának az okosok választ, példakódot, etc...
-
trisztan94
őstag
válasz
szmegma #2052 üzenetére
"Egyebkent miert baj, hogy a visszatero adatot szeretnem szurni? Ezert lenne a filter() es find() fuggveny nem?"
Feleslegesen lassítja az oldalt. Nem egyszerűbb csak azt az adatod visszakérni amire ténylegesen szükséged van, nem kell szűrni? A te megoldásoddal így megy végig:
Elküldi a kérést a PHP-nak, ami visszaküldi az összes adatot. Ezt visszaküldi a scriptednek, ami végigmegy az adathalmazon amíg nem találja meg azt amire neked szükséged van (ha jól tudom a .find() lineárisan keres, nem? - a lineáris keresés a leglassabb keresés - szintén amennyiben jól tudom, javítsatok ki, ha tévedek), majd berakja neked a html-edbe.
Szűrés nélkül, ha csak arra kérsz kérést amire ténylegesen szükséged van:
Elküldi a kérést PHP-nak, ami feldolgozza azt amit mondtál neki, visszaküldi a scriptnek azt a specifikus dolgot amit kértél, a script meg beülteti a html-be.
Nem kell feleslegesen végigmenni az összes adaton, mivel tudod, hogy tutifrutti azt kapod amit kértél.
"Ez a POST-os megoldas nem jo, ui. akkor az "Utolsó frissítés: 2013 April 21." reszt torli a BODY-bol."
Átírtad a PHP fájlod, hogy működjön a POST-os megoldással? Ha nem, akkor nyilván nem fog működni. Ha nem érted a PHP-t, akkor írj a PHP fórumba, ott majd eligazítanak, hogy hogy kéne kinéznie.
Nekem amúgy nem törli az "utolsó frissítés" izét.Pontosan amúyg mit szeretnél elérni? Gondolom azt, hogy újratöltés nélkül tudja a user lapoztatni az oldalt, nem?
Amúgy szerintem azért válik inaktívvá a lapoztatás mert azt is minden kérés után újra betöltöd, azt külön kéne rakni az ajaxtól és egy változót létrehozni php-ban, ami visszaküldi a scriptnek, hogy hanyadik oldal volt előbb nyitva, vagy valami ilyesmit és onnantól kezdve gyerekjáték.
szerk:
Alapból a HTML kódod is elég zavaros, minek ennyi div?
<div id="news-tartalom" style="padding-bottom:1px;">
<div id="news" class="module">
<div>
<div>
<div>
<h3>CUCC</h3>
<div class="datum"> 2012 Október 20.</div>
<div class="hirek">bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
</div>
</div>
</div>
</div>
<div style="position:relative;width:370px;margin:0px auto 0px auto;padding:0;text-align:center;color:#999999;">
</div>elég lenne így:
<div id="news-tartalom" style="padding-bottom:1px;">
<div id="news" class="module">
<h3>CUCC</h3>
<div class="datum"> 2012 Október 20.</div>
<div class="hirek">bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
</div>
<div style="position:relative;width:370px;margin:0px auto 0px auto;padding:0;text-align:center;color:#999999;">
</div> -
szmegma
aktív tag
Atultettem egy teszt erejeig a kodot:
http://agyhalott.net23.net/test.php
Ez a POST-os megoldas nem jo, ui. akkor az "Utolsó frissítés: 2013 April 21." reszt torli a BODY-bol.
Egyebkent miert baj, hogy a visszatero adatot szeretnem szurni? Ezert lenne a filter() es find() fuggveny nem?Jelenleg itt tartok es itt all meg a tudomanyom. Kattintsatok az egyik szamra (1,2,12)
Betoltodik az adott id-ju cucc es a lapozo is atvaltozik ahogy kell. Viszont ha most kattintani akartok megint az egyik szamra, miert nem tortenik semmi?
Az error consol nem dob hibat, a duplazast is sikerult megoldani, erre jon ez az idegesito inaktivva valas... -
Peter Kiss
őstag
válasz
trisztan94 #2050 üzenetére
$_POST[action] => $_POST['action'] !!! E_NOTICE különben
Ha egy string értéke egy meghívható függvényé, már működik (simán: $action()). Ha mondjuk visszamegy kettő, akkor pl. meg lehet oldani egy statikus metódushívást is, de akár elő lehet szedni egy megfelelő objektumot is, majd instance szintű metódust lehet hívni (call_user_func vagy call_user_func_array), gyakorlatilag így tud működni pl. egy MVC keretrendszer routing-ja is, egyszerű konvención alapszik.
Igen, ASP.NET-ben is így van, de konvenció szerint az action az egy (MVC-ben ActionResult-ot visszaadó) metódus neve.
-
trisztan94
őstag
A $_POST[action] az csak egy változó, nem?
Igazából be kell vallanom jó ideje nem php-ztam, lehet hülyeséget írok, de egy változó hogy tud meghívni egy fuggvenyt? Azt a valtozot le kell kezelni egy elagazassal vagy valamivel, nem?
C#-ban tudsz ajaxbol class-t meghívni az ajax action-jevel. Tehát ha ajaxban ez van: action: valami, akkor az az asp.net valami nevű class-jere mutat.
De ha csak ezen az egy oldalon van neki ajax, akkor felesleges szerintem ez, mert egyfajta adatot ker, így nincs sok választási lehetoseg, hogy mit kell visszaadni.. -
Jim-Y
veterán
válasz
trisztan94 #2048 üzenetére
Én nem így gondoltam.. csak rosszul írtam le, kicsit érthetetlenül :/
Szóval én úgy csinálnám, hogy a az ajax, data mezőjében egy action-t küldenék csak, ugye az php oldalon, ha jól emlékszem a $_POST[action]-be kerül, majd php oldalon ezen $_POST[action] függvényében hívnám meg a szükséges függvényt, ami csak azt adná vissza, amire szükség van, ergo nem mindent küldenék vissza, csak azt a darab kódrészletet amire szükség van.. -
trisztan94
őstag
válasz
szmegma #2046 üzenetére
A php fajlban szabalyozod, hogy mit kuldesz vissza. Ott írd át, hogy csak a neked kellő adatokat küldje vissza (gondom adatbázisból szedi a dolgokat, nem?)
Vagy az is jó amit Jim-Y irt, letrehozol egy fuggvenyt a php fajlodban es arra kuldesz kérést, bár ha csak ez az egy ajax keresed van az oldalon, akkor felesleges annak külön function-t létrehozni.
-
szmegma
aktív tag
válasz
trisztan94 #2045 üzenetére
Azt hogyan lehet?
$.ajax({
type:"POST",
url:"pages/sablons.php",
dataType:"html",
data:"pg="+output,success:function(returned_data){
}
}Ez a resz, az egesz sablon.php tartalmat elkuldi. Hogyan lehet szabalyozni, hogy CSAK a <div id="sablon-tartalom"></div> tartalmat kuldje el es ami visszater, azt a <div id="sablon-tartalom"></div> objektumba toltse bele?
-
szmegma
aktív tag
válasz
Sk8erPeter #2043 üzenetére
Termeszetesen tudom, hogy a $("span").html(returned_data); feltolti az osszes span-t a returned_data tartalmaval, am az adott lapon csak ez az egy span van, szoval mashova nagyon nem fogja tudni betolteni, azert is nem definialtam jobban. Ez a kod, csak ezen a lapon fut le, ha masik lapot toltok be, akkor nem.
Ugyanez igaz a $("span").empty(); es a TT objektumra is.Par oldal alapjan gondoltam, hogy ez igy lenne jo:
Filtering returned $.post data by class name
jQuery .find() on data from .ajax() call is returning “[object Object]” instead of divvar filter = $("span").find("#sablon").html();
$("#sablon").html(filter);
Ez ugyebar azt csinalja, hogy a spanban levo kodban megkeresi a sablon id-ju DIV-et es annak tartalmat a filter valtozoba teszi, majd a filter valtozo tartalmat betolti a sablon id-ju DIV-be.
Ezt azert igy talaltam ki, mivel eloszor is igy keszitettem el a kodot es syntax errort dobott az error console:success:function(returned_data){
var response = $(returned_data);
var result = response.find("#sablon").html();
$("#sablon").html(result);
$("tt").removeClass();
$('#'+lap).addClass("activate");
$("#sablon-loading").fadeOut("fast");
$("#sablon").fadeIn("slow");
}Valamiert stingnek latja a visszatero tartalmat es nem objectnek, ezert syntax errort dob.
A lenyege az lenne, hogy a visszatero adatbol ne mindet toltse be az adott divbe, mivel a visszatero adat tobb olyan kodot is tartalmaz, amit nem kellene betoltenie az adott DIV-be.
Hogyan szurjem akkor ki a kivant adatokat es hogyan toltsem be azokat az adott DIV-be?
Koszonom. -
Sk8erPeter
nagyúr
válasz
szmegma #2042 üzenetére
Hát itt vannak elég érdekes dolgok...
Pl. eleve az adataid kettőzését nem nagyon fejtetted ki, előbb azt kellene megoldani.
Aztán menjünk tovább:
$("span").html(returned_data);
Azt ugye tudod, hogy ez mit csinál?
Tessék, ezt:
http://jsfiddle.net/wSN3C/
van 14 spanem, mindet feltölti ugyanazzal a szöveggel...
nálad is ez a helyzet, van vagy 12 spaned (most csak hasraütésre), azok közül az ÖSSZESET feltölti a returned_data változó tartalmával. Nem hiszem, hogy Te ezt szeretnéd. De lehet, hogy az általad mutatott kódon kívül az oldaladon máshol is vannak spanek, na, akkor az oldaladon az összes spant feltöltené ugyanazzal a szöveggel. Egy kissé jobban illene specifikálnod a kódban, hova is szeretnéd betölteni a visszakapott tartalmat.$("span").empty();
Ugyanaz vonatkozik erre, mint az előbbi kódrészletre, csak itt épp kiüríted az összes spant - nem biztos, hogy túl szerencsés, amikor az oldalon található összes span-elem tartalmát eldobod.var filter = $("span").find("#sablon").html();
..
$("#sablon").html(filter);Ennek igazából mi értelme van?
$("tt").removeClass();
Miért lenne az jó, hogy az ÖSSZES osztályt eltünteted, ami az ÖSSZES oldalon szereplő tt-elemen van? Ismét nagyon rossz ötlet.Igazából a kód így nagyon zavaros és hibás.
-
szmegma
aktív tag
Sajnos egy problemaba utkoztem. A weblapomon jQuery-t hasznalok ugy, hogy POST-tal elkuldott adatot toltok vissza. Mukodik minden rendben, csak van egy kis szepseg hibaja es gondoltam javitom.
A hiba, hogy a lapozora kattintas utan, a visszatert adatban a <div id="lastmod">Utolsó frissítés: 2013 March 16.</div> resz kettozodik, igy a lap aljan ketszer jelenik meg.
A javitott koddal sikerult kikuszobolnom ezt (a visszatert adatot filterezem es adott helyre toltom be a kivant adatokat), am egy masik hiba jelent meg. Az elso kattintas utan (valamelyik lapozo szamjan) betoltodik az adott sablon, a lapozo is rendben atvaltozik, am inaktivva valik. Hiaba kattintok akarmelyik szamra, nem tortenik semmi, nem POST-ol semmit. Ha F5-tel frissitem az oldalt, minden visszaall eredeti allapotara es az elso kattintas erejeig a lapozo mukodik, a masodik kattintas mar nem.
Valoszinu a filterezes ronthat el vmit, mivel anelkul mukodik, csak ugyebar duplazza az adatokat.
Akinek lenne otlete, hogy mi a hiba, megkoszonnem.Ez lenne a jQuery:
$(document).ready(function(){
$("#sablon-loading").hide();
$("tt:first").addClass("activate");
$("tt").click(function(){
$("#sablon").hide();
$("#sablon-loading").show();
var lap = $(this).attr("id");
var output = lap.substring(4);
$.ajax({
type:"POST",
url:"pages/sablons.php",
dataType:"html",
data:"pg="+output,
success:function(returned_data){
$("span").html(returned_data);
var filter = $("span").find("#sablon").html();
$("span").empty();
$("#sablon").html(filter);
$("tt").removeClass();
$('#'+lap).addClass("activate");
$("#sablon-loading").fadeOut("fast");
$("#sablon").fadeIn("slow");
}
});
});
});Ez lenne a HTML:
<div id="sablon-tartalom" style="padding-bottom:1px;">
<div style="display: none;" id="sablon-loading" class="loading"><img alt="" src="_/loader.gif"></div>
<div id="sablon">
<table style="width:100%;">
<tbody><tr>
<td class="table_head" colspan="3" align="center"><span class="span-a">Sablon 1</span></td>
</tr>
<tr>
<th style="text-align:left;" rowspan="6"><img alt="" style="vertical-align: bottom;" src="kep.png"></th>
<td class="table_field_right" colspan="2"><span class="span-e">Téma:</span> <span class="span-f">Szmegma Default</span></td>
</tr>
<tr>
<td class="table_field_right" colspan="2"><span class="span-e">Készítette:</span> <span class="span-f">Szmegma</span></td>
</tr>
<tr>
<td class="table_field_right" colspan="2"><span class="span-e">Betû Színe:</span> <span class="span-f">Black</span></td>
</tr>
<tr>
<td class="table_field_right" colspan="2"><span class="span-e">Betû Típusa:</span> <span class="span-f">Utsaah</span></td>
</tr>
<tr>
<td class="table_field_right" colspan="2"><span class="span-e">Használatban:</span> <span class="span-f">9 avataron</span></td>
</tr>
</tbody></table>
</div>
<div style="position:relative;width:370px;margin:0px auto 0px auto;padding:0;text-align:center;color:#999999;">
<tt class="activate" id="lap.1">1</tt><tt id="lap.2">2</tt>...<tt id="lap.15">15</tt>
</div>
</div>
<div id="lastmod">Utolsó frissítés: 2013 March 16.</div> -
Sk8erPeter
nagyúr
válasz
vakondka #2038 üzenetére
Nagyon favágó megoldással:
http://jsfiddle.net/Sk8erPeter/P8dJR/15/
Amit lehet, jobb megoldani sima CSS-sel (pl. background-color a hoverre, meg csak osztályok hozzáadása/elvétele, így nem a JS-kódba van bedrótozva a megjelenítés!).
-
vakondka
őstag
Sziasztok,
div-re kattintással szeretném kiválasztani a benne lévő radio elemet, de valamiért nagy furcsán működik:
[link]Arról nem beszélve, hogy jó lenne, ha a háttérszín is úgy maradna a kiválasztott div-nél...
-
martonx
veterán
válasz
trisztan94 #2028 üzenetére
Ehhez minek jquery? Sima CSS csinál neked olyan tooltipet, hogy öröm nézni.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #2033 üzenetére
"TypeError: $(...).tooltip is not a function"
Magyarul nem a sima jQuery-kódnál vérzett el, hanem amikor a Tooltipet akartad használni, nyilván akörül kellene keresgélni a problémát... -
Jim-Y
veterán
válasz
trisztan94 #2033 üzenetére
nem tudsz egy hosszabb kódrészletet megosztani? Esetleg JSfiddle?
-
Jim-Y
veterán
válasz
trisztan94 #2028 üzenetére
Pedig amit írtál az működik, tehát elképzelhető, hogy mégiscsak a JQuery linkelésével lesz gond...
-
Sk8erPeter
nagyúr
válasz
trisztan94 #2028 üzenetére
Ennyiből nehéz mit mondani. $(document).ready() eseményre kötötted?
-
cucka
addikt
válasz
trisztan94 #2029 üzenetére
A javascript kódot a kliens böngészője futtatja.
Tehát akárhogy csűröd-csavarod, mindenképp el kell jusson a kód a kliens böngészőjébe, ha pedig ez megtörtént, akkor már szabad préda.Firebugot nem lehet blokkolni. Ugyanaz a történet, mint az előbb: amit egy weboldalon a júzer lát, azt onnan látja, hogy a szervered elküldte a böngészőnek. A firebug csak egy eszköz arra, hogy könnyebben tudd kezelni azt a csomó mindent, amit a szerver elküldött.
Inkább valamilyen videós megoldásban tudnék gondolkozni, esetleg animált gif
. Mondjuk az jó kérdés, hogyan lehetne ezek elkészítését automatizálni.
-
trisztan94
őstag
Más:
Szeretnék egy olyan funkciót beépíteni, hogy felhasználók feltöltenek egy kódrészletet, majd azt valaki más virtuális pontokért "megveheti". Ahhoz, hogy ez működjön úgy kéne szerintem csinálni, hogy amikor csak nézik, akkor a kész eredményt látják, (tehát pl egy animációnál animálódik egy doboz..) vásárlás után pedig a kódját is megkapják.
Nos, azt, hogy "látják, hogy hogy fut le" hogy kéne megoldani, hogy XSS-biztos legyen?
iFrame-ben gondoltam, távoli szerverről, de az bonyolult.
Nincs erre valami megolás jQuery/js-szel? Például ami engedi lefutni a tartalmat, de csak abban a div-ben, vagy valami. Megoldható vajon ez vagy muszáj lesz minden kódrészletet moderálni, ellenőrizni?Szerk: Meg mondjuk lehet valaogy blokkolni azt, hogy firebuggal, vagy bármi mással megnézzék a JS kódot ami a produktum mögött áll?
-
trisztan94
őstag
Sziasztok!
Egy mezei jQuery UI tooltip plugint szeretnék használni, de sehogy sem működik.
Itt a html-em:
<label for="isSnippetPrivateSelector">Mások is megtalálhassák ezt a kódrészletet? <a title="blabla" id="whatIsThis_PrivateSnippet" href="">Ez mi?</a></label>Tehát a linkre szeretném kötni.
Itt a jQuery:
$('#whatIsThis_PrivateSnippet').hover(function () {
$(this).tooltip();
});Firebug ezt dobja:
TypeError: $(...).tooltip is not a function
$('#whatIsThis_PrivateSnippet').tooltip();Természetesen hozzá van rendelve mind a jQuery 1.9.0, mind a jQuery UI az oldalhoz:
<script src="~/Scripts/jquery-1.9.0.min.js"></script>
<script src="~/Scripts/jquery-ui-1.8.20.js"></script>Amúgy a VS IntelliSense fel is dobta a tooltip-ot, tehát hozzá van rendelve rendesen..
-
whYz
őstag
Koszi
-
trisztan94
őstag
Régebben egy fotós srácnak készítettem oldalt, én is ilyesmit kerestem, de nem találtam, így írtam egyet magamnak. Ha megvan meg a kód felrakom valahova este
Olyasmi volt, hogy panorámakepeket megnyitotta teljes kepernyoben es az ablak szeleihez húzva az egeret ment balra ill., jobbra. Ilyesmire gondoltál?
-
whYz
őstag
Tudtok egy olyan scriptet, hogy van egy 360 fokos kep, es azt beagyazni egy oldalba olyan modon, hogy korul lehessen nezni, esetleg meg be is jelolni rajta dolgokat?
Konkretan egy bemutatotermet szeretnek csinalni. -
cucka
addikt
válasz
martonx #2021 üzenetére
Most már vannak más platformokra is libek, amivel hasonlóan egyszerű restful api-kat fejleszteni, de a node volt talán az első, ahol tényleg pár sorban megoldható.
A gépi kódra fordítás valóban nagy előny, bár ez nem node-specifikus, ez a V8 fícsörje.
A magasra skálázódás pedig elsősorban nem annak köszönhető, hogy a V8 gépi kódra fordít (más nyelveknél bytecode cachelés ugyanezt tudja), hanem annak, hogy node-ban aszinkron IO van. Tehát a programod nem blokkol, amíg várakozik egy erőforrásra, hanem felfüggeszti a működését. -
Speeedfire
félisten
Köszi mindkettőtöknek.
-
martonx
veterán
Megelőztél, túl sokáig írtam a választ.
Villámgyorsan restful api-kat bármiben lehet fejleszteni. Szvsz nem ebben mutatkozik az előnye, hanem a hardver közeli kóddá fordulásában, illetve a teljes aszinkron belső felépítésében. Tisztán js-ben dolgozni elég gány dolog, viszont ahol semmi más nem számít, mint a teljesítmény, ott a Node.js a nyerő.
-
martonx
veterán
válasz
Speeedfire #2018 üzenetére
Én is mindent json-ban tolok ki. Viszont nagyon nem mindegy, hogy egy pár ezer soros json-ban adatokhoz csak kódokat küldesz ki, plusz a kódok feloldását, ahol mondjuk szintén ezres nagyságrendű kód - érték párt kiküldesz. Ezután soronként kell megkeresned minden egyes adatnak a kód feloldását, majd az így kapott értékekből generálj egy bonyolultabb html-t. Ha nem chrome-on csinálsz ilyet, akkor lazán másodpercek fognak eltelni egy gyorsabb gépen is. Ugyanez ez szerver oldalon (.NET, Java, Node.js) 1-2 milisecundum alatt megvan (PHP-ban is csak pár tíz milisec). Persze mindez csak egy teoretikus probléma, hogy érzékeltessem a futásidőbeli különbségeket. Mondhattam volna akár egy bonyolultabb súlyozós, rangsoról problémát is, hogy milyen különbség van ugyanazt az algoritmust js-ben futtatni, vagy szerver oldalon futtatni.
A Node.js-t pedig nagyon nem kéne a kliens oldali javascripthez keverni. A Node.js tisztán szerver oldalon fut, igaz javascriptben kell programozni, de ez csak puszta szintaktika, mivel gép kód fordul (és itt a fordulon van a hangsúly) belőle, azaz a Node.js ettől az egyik leggyorsabb szerver oldali kiszolgálója lett mostanra. Nem tudom, hogy ezzel sikerült-e megvilágítanom az előnyeit, ha nem hát nem.
-
cucka
addikt
válasz
Speeedfire #2018 üzenetére
A node.js szerveroldali javascript, tehát semmi köze ahhoz, hogy mi történik a kliens böngészőjében.
Lényegében kiválthatod vele a PHP-ban (vagy másban) írt webes backend-et, de erre talán nem a legjobb eszköz. Amiben viszont tényleg nagyon jó, hogy villámgyorsan tudsz benne restful api-kat fejleszteni, ráadásul nagyon magasra skálázódik mindenféle trükk nélkül. -
Speeedfire
félisten
válasz
martonx #2015 üzenetére
Pedig mostanában nagyon rákaptam. Kitolom json-ban és js-el feldolgozom, igaz ezek inkább csak az ajax-os kérések.
Viszont akkor nem értem pl a node.js-t sem, milyen előnyei lehetnek egy weblapnál, vagy az már inkább komplex webalkalmazáshoz van?
cucka: Igen, hasonlóra akarom használni. Illetve láttam egy tutplus-os cikket, ahol a jquery-vel volt összefűzve és nagyon tetszetős volt. -
cucka
addikt
válasz
Speeedfire #2011 üzenetére
Ismerem, használtam, szerintem marha jó.
Ha komplex UI-t szeretnél készíteni, ahol minden mindennel összefügg és frissül (pl. komplex formokat csinálni js-ben), akkor megváltás. -
martonx
veterán
válasz
Speeedfire #2014 üzenetére
A js eleve nem gyors, pláne, amikor már egészen bonyolult, nagy dom-okat kell macerálni, hiába írnak meg rá mostanra ilyen-olyan 3d engineket is. Kivétel ez alól a Webkit, az b***t gyorsan futtatja a klasszikus webes js feladatokat.
Szóval a gyorsasága relatív. Nem mondtam, hogy lassú, de nem js-ben fogsz több ezer sornyi adatsoron dinamikus sorbarendezést csinálni, közben mezőket kalkuláltatni egymásból, meg dom-ot buzerálni 1-2 milisecundum alatt. Pláne, ha cél, hogy mindez akár a legújabb Ie, Firefox alatt is elfogadható sebességű legyen, és akkor még nem is beszéltem a 600Mhz-es Arm-os egymagos mobilokról. Bár van egy KoGrid nevű bővítménye is a KO-nak, abban láthatod, hogy megfelelően egyszerű adatoknál, végletekig letisztult DOM esetén akár még ez is gyors tud lenni.
Nem véletlen, hogy a twitter például visszaváltott a minél inkább szerver oldali adatmanipulációkra a kliens oldali masszív js-ezés helyett (közben igaz dobta a Ruby-t is a Java javára, a MySQL-t pedig Lucene NoSQL-re cserélte, de ez most esetünkben mellékszál).
Azaz ezeknek a js-es MV* frameworköknek akkor csillan meg igazán a tudásuk, ha valami nagyon komplex Single Page Appilcation-t kell csinálnod, ahol minden kattintás mindennel összefügg, ugyanakkor nem kell több tízezer adatsorral dolgoznod.
De mindez csak az én személyes véleményem, tapasztalatom, cáfoljatok meg nyugodtan. -
martonx
veterán
válasz
Speeedfire #2011 üzenetére
Ismerem, használtam, bár mélyre nem merészkedtem vele. Van még az Ember.js, Angular.js, jsRender és még kismilló hasonló.
Konkrétan a KO-t használtam, mert ez az egyik legkönnyűsúlyúbb, és baromi jó a dokumentációja. Másrészt mivel könnyűsúlyú, nagy csodákat ne várj tőle, se tudásban, se futásteljesítményben. -
martonx
veterán
válasz
trisztan94 #2010 üzenetére
Próbáltad már itt PH-n belül a C#-os topik-ot? Kérdezz bátran, szerintem semmi baj nincs az ASP.NET-es közösséggel. Aztán ott van még a Devportal-os szintén MS érintett topik, ott is szoktak segíteni.
Illetve szerintem ami még gond tud lenni, hogy ugyan létezik ez az ASP.NET Web Pages is mint egy választható lehetőség az ASP.NET ökoszisztémán belül, de szvsz az ASP.NET programozók 99% vagy Web Forms-t, vagy MVC-t használ, szóval inkább ez lehet az oka annak, hogy nehezen kapsz választ. -
Speeedfire
félisten
Ezt próbálta már valaki? Vagy esetleg ismer hasonló jóféle UI manipulátort?
-
trisztan94
őstag
válasz
Sk8erPeter #2008 üzenetére
Kicsit megkésve, de köszi!
Ezek szerint félreértettem a státuszváltozó szerepét, így kifejtve tényleg jó dolog ha van
Megcsinálom majd így
Nem magát a PHP-t sírom vissza, hanem a közösséget ami mögötte áll. Nem lehet összehasonlítani a kettőt. Érted
-
Jim-Y
veterán
válasz
Sk8erPeter #2006 üzenetére
Szia
Átírtam, de így is rossz helyre teszi :/
Ez a konténer, ahova tenni szeretném:
<td>
<div id="script_container">
</div>
</td>Itt a függvény amit átvettem tőled:
// Load charts to container div-s.
function loadChart(url, callback, target_id){
var script = document.createElement("script")
script.type = "text/javascript";
if (script.readyState){ //IE
script.onreadystatechange = function(){
if (script.readyState == "loaded" ||
script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function(){
callback();
};
}
script.src = url;
if(target_id === undefined){
document.getElementsByTagName("head")[0].appendChild(script);
}
else {
document.getElementById(target_id).appendChild(script);
}
}Itt pedig ahogy fel akarom használni:
).bind("select_node.jstree", function (event, data) {
if(data.inst.get_text() === "/map"){
window.open(data.rslt.obj.attr("target"));
} else if(data.inst.get_text() === "/kpi"){
loadChart("area-js.js", function(){}, "script_container");
}
});Jó helyre szúrja be a kódban, ellenben a chart kicsúszik a táblázatból, és csak a táblázat alatt jelenik meg. Próbáltam azt is, hogy előre megfelelőre méretezem a cellát, de így is a táblázat után mutatja az ábrát, pedig a kódban jó helyen van a script tag :/
-
Sk8erPeter
nagyúr
válasz
trisztan94 #2001 üzenetére
Nem, nem erre gondoltam, és egyáltalán nem felesleges a státuszváltozó. Miért lenne már az? Baj, ha a szervertől visszakapott válaszból értelmes adat is kinyerhető a konkrét állapotról?
Több eset is elképzelhető, amikor szükséged lenne a státuszra vonatkozó változóra. Például ha keletkezik egy exception az adatbázissal való kommunikáció során, akkor ezt le kell kezelni, felhasználóbarát üzenet formájában jelezni, hogy para volt, próbálja később, satöbbi. Ettől még az AJAX-kommunikáció során a success callback-be (!!) kell, hogy lépjen a script, mert attól még a válasz 200 OK HTTP-kóddal, gond nélkül lefutott, az már másik kérdés, hogy nem azt a választ kapta a júzer, amire kíváncsi lett volna. Például ebben az esetben lehet, hogy az a feladatod, hogy ha ilyen jellegű hiba volt, akkor legyen valami ilyesmi kódod:
... function(data){ // success callback...
if(data.status === "error") {
szálljon_el_egy_vörös_sárkány_a_képernyőn();
jelenjen_meg_egy_óriási_hibát_jelző_div_a_felhasználó_arcába_tolva();
szólaljon_meg_egy_drámai_hatást_keltő_zene();
most_kezdjünk_valamit_a_hibakóddal(data.code);
return;
}
// egyébként meg fusson le a sikert jelző kód
// ...
}...Remélem nagyjából érthető, hogy mi a lényege az egésznek... (az olvashatóság érdekében nem camelCase-zel írtam
)
Igenis szükség van a státuszt jelző változóra, szükség lehet konkrét hibakódra is, mint a pszeudokódban is látszik, és ha már elkezdesz ezzel foglalkozni, akkor kezdd el igényesen, később is felhasználható módon.A PHP-t ne sírd vissza sztem, ha ASP.NET-ezel, mert akkor valahol az igénytelenséget sírod vissza.
-
Jim-Y
veterán
válasz
Sk8erPeter #2006 üzenetére
Igen, valami ilyemi kéne, majd jövő héten kipróbálom és visszaírok
-
Sk8erPeter
nagyúr
Szerintem nem feltétlenül szükséges hozzá jQuery, már ha egyáltalán jól értem a problémát, hogy megfelelő helyre kell betenni az adott scriptet, és ott lefuttatni...
.appendChild()-dal hozzáfűzhető plain JS-sel egy script tag...
Ilyesmi? --> http://jsfiddle.net/VJNMb/
-
martonx
veterán
válasz
trisztan94 #2002 üzenetére
Akkor már inkább $("#valami").html("script....") és kész is, és pont ott van ahol kell.
-
martonx
veterán
válasz
trisztan94 #2001 üzenetére
A C# tömbök faék egyszerűségűek, és kizárólag számmal indexelődnek. Ez már csak a nyelv tipikussága miatt is így van. Ellenben ha te string-gel akarsz indexelni, akkor arra meg ott van a Dictionary típus, és van még pár egyéb kollekció típus.
PHP-ben meg van egy szál tömb, amit úgy gyurmázol ahogy akarsz. Ez nagyon nagy előnye a nem típusos PHP-nek, egyben talán a létező legnagyobb hátránya. De nem szeretnék itt offolni, meg hitvitákat kirobbantani.Viszont javaslom, hogy lépj tovább Web Pages-ről, MVC-re.
-
trisztan94
őstag
Ha jól tudom az .append() az mindig az appendolt elem után rakja be a tartalmat, nem?
Tehát, ha itt a DIV-ed, amiből kicsúszik a dolog, gondolom így csinálod (pszeudokód):<div id="vmi"></div>
$('#vmi').append(tartalom);és akkor így jön vissza:
<div id="vmi"></div>
tartalomMiért nem csinálsz az üres divben egy divet pont erre a célra? Tehát így:
<div id="vmi">
<div id="tartalomhelye"></div>
</div>Így a tartalomhelye-re appendolod, így benne lesz a "vmi" divedben. Aztán az append után akár el is távolíthatod a "tartalomhelye" divet.
Tehát valahogy így:
$('#tartalomhelye').append(tartalom);
$('#tartalomhelye').remove();Lehet, hogy rosszul értelmeztem, ha igen, bocsi
-
trisztan94
őstag
válasz
Sk8erPeter #1993 üzenetére
Ja én azt hittem ezekre, hogy a JSON saját dolgai. Nem tudom már mit gondoltam. Igen, class-szel működik szépen a dolog.
A státuszváltozó szerintem felesleges, mert mindig le kell futnia a Query-nek, egyetlen lehetőség van amikor nem, amikor az adatbázist nem tudja valamiért olvasni, de arra már van user friendly üzenetem.Gondolom arra gondoltál, hogyha a user url-ből nyitja meg azt a fájlt amire amúgy ajax-szal küldök kérést, és így változók hiányában exception-nel kidob. Ezt már kiküszöböltem, csak a script férhet hozzá, amúgy se read se write jogosultság nincs hozzá és egy üzit dob ki, hogy nem kéne
Vannak dolgok amiért visszasírom a PHP-t amúgy. Olyan egyszerű műveletek, mint, hogy rákeressek arra, hogy miként indexel a C# ASP.Net-ben tömböket sem tudok egyszerűen megnézni. Fórumjuk viszonyag elfogadható, de már 1 napja nem érkezett válasz a kérdésemre.. Na mindegy, azért már jobban kenem-vágom ezt, mint a PHP-t
Köszi, a dictionary-nek utána nézek!
Új hozzászólás Aktív témák
- Samsung UE40NU7192 101 cm / 40 4K UHD Smart TV 6 hó garancia Házhozszállítás
- LG 65NANO81T3A 165 cm / 65 4K UHD NanoCell Smart TV 6 hó garancia Házhozszállítás
- Playstation 4 Pro 1 TB + kontroller 6 hó garancia, számlával!
- LG 50NANO803PA 126 cm / 50 4K UHD NanoCell Smart TV 6 hó garancia Házhozszállítás
- Xbox One S 512 GB + kontroller 6 hó garancia, számlával!
- BESZÁMÍTÁS! Asus PRIME B450M R5 2600X 16GB DDR4 512GB SSD GTX 1060 3GB AeroCool Quantum Mesh V3 400W
- iKing.Hu - Apple iPhone 12 Pro Max Prémium Graphite stílus, óriási kijelző és profi kamera 100%
- GYÖNYÖRŰ iPhone 11 64GB White -1 ÉV GARANCIA - Kártyafüggetlen, MS3346, 100% Akkumulátor
- MSI Sword 16 - Core i7 / RTX 4050 / per key RGB / magyar garancia
- HIBÁTLAN iPhone 15 Pro Max 256GB Black Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS3004
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest