Hirdetés

Keresés

Új hozzászólás Aktív témák

  • 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. :K 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.

  • trisztan94

    őstag

    válasz szmegma #2044 üzenetére

    Miért nem a visszaküldött adatot szabalyozod ahelyett, hogy olyan dolgokat kuldesz vissza amikre nincs szükséged?

Új hozzászólás Aktív témák