Json adaton ciklus

Json adaton ciklus
2011-06-29T11:28:56+02:00
2011-06-29T13:22:48+02:00
2022-11-22T08:10:33+01:00
stY
Hello!

Van egy ilyen JSOn formátumú adatom, amit CakePHP-m visszaküld a view-nek:


{"adat":[{"id":"1","type_id":"1","name":"A1","xkoord":"1353.000","ykoord":"11268.000","alapmag":"106.7010","kezdido":"1984-11-16","row_id":"1","frame_id":"1","group_id":"1","floor_id":"0","section_id":"0","pillar_id":"0","summarychange":"0.0000","block_id":"1","cchange":"0.0000","sumweightepig":"27.0000","sumweightuzem":"0.0270","epigchange":"0.0270","comment":"A1-es pont"},{"id":"2","type_id":"1","name":"A1a","xkoord":"1353.000","ykoord":"11274.000","alapmag":"106.7220","kezdido":"1984-11-16","row_id":"1","frame_id":"2","group_id":"1","floor_id":"0","section_id":"0","pillar_id":"0","summarychange":"0.0000","block_id":"1","cchange":"0.0000","sumweightepig":"27.0000","sumweightuzem":"0.0270","epigchange":"0.0270","comment":"A1a pont"},{"id":"3","type_id":"1","name":"A12II","xkoord":"1353.000","ykoord":"11400.000","alapmag":"106.7840","kezdido":"1984-11-16","row_id":"1","frame_id":"23","group_id":"2","floor_id":"1","section_id":"4","pillar_id":"2","summarychange":"0.0000","block_id":"2","cchange":"0.0270","sumweightepig":"27.0000","sumweightuzem":"0.0270","epigchange":"0.0270","comment":"Proba pont"}]}

Ez látható, hogy 3 szintű:

adat
adatban több csoport, amiben mezők, pl:id,stb....

JQuery-vel történik a kérés:


var pont = $('#pont').attr('value'); $.post('<?php echo $eleresiut->utpre(); ?>measurements/szures', {pontnev : pont}, function(data){ //loop }); },"json");

Próbáltam már sokféle képpen végigmenni, $.each-el stb.. Nem megy.

Hogyan lehetne belemenni ciklussal, hogy az id,name stb értékeket kapjam?
Mutasd a teljes hozzászólást!
Végülis megoldottam a feladatot, csak elég fapados, aki tud jobbat írja le és övé a pont:


function meretObj(obj) { var count = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)) { count++; } } return count; } var pont = $('#pont').attr('value'); $.post('<?php echo $eleresiut->utpre(); ?>measurements/szures', {pontnev : pont}, function(data){ var obj = jQuery.parseJSON(data); var meret = meretObj(obj.adat); for (var i=0;i<=meret-1;i++){ alert(obj.adat[i].name); } }); },"json");
Mutasd a teljes hozzászólást!

  • És mi lenne, ha a jquery parseJSON metódusát használnád?
    Mutasd a teljes hozzászólást!
  • Itt teljesen más probléma volt.


    Ehelyett:
    $.post('<?php echo $eleresiut->utpre(); ?>measurements/szures', {pontnev : pont}, function(data){ $.each(data.adat, function(i, item) { alert(item.id); }); },"json");
    Ezt: - és így működik....

    var pont = $('#pont').attr('value'); $.getJSON('<?php echo $eleresiut->utpre(); ?>measurements/szures', {pontnev : pont}, function(data){ $.each(data.adat, function(i, item) { alert(item.id); }); });

    Valamiért amikor $.post-ot használtam, a $.each nem akart működni.... Így meg igen....

    Csak így meg a postolt adat nem küldődik el ugye....

    Na ezt magyarázza meg valaki...
    Mutasd a teljes hozzászólást!
  • Mindenképpen post-al kellene csinálnom nem getJSON-al, mert kell küldenem is adatot.

    Ha $.post-ot használok jön a hibaüzi:

    object is undefined
    length = object.length,
    Mutasd a teljes hozzászólást!
  • Próbálom használni, de nem segít sokat. Lehet én használom rosszul. Akármire húzom rá nem segít.
    Mutasd a teljes hozzászólást!
  • Végülis megoldottam a feladatot, csak elég fapados, aki tud jobbat írja le és övé a pont:


    function meretObj(obj) { var count = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)) { count++; } } return count; } var pont = $('#pont').attr('value'); $.post('<?php echo $eleresiut->utpre(); ?>measurements/szures', {pontnev : pont}, function(data){ var obj = jQuery.parseJSON(data); var meret = meretObj(obj.adat); for (var i=0;i<=meret-1;i++){ alert(obj.adat[i].name); } }); },"json");
    Mutasd a teljes hozzászólást!
  • Mindenképpen post-al kellene csinálnom nem getJSON-al, mert kell küldenem is adatot.


    A getJSON-nal is tudsz paramétereket küldeni get kéréssel és data paraméterben megfelelően kódolva. Szal ezt a problémádat nem értem.

    De ha ragaszkodsz a post-hoz, akkor a post után visszakapott eredmén megfelelő részét (ami a json-t tartalmazza) futtasd át a parseJSON-on és ha valid a JSON struktúra, akkor jónak kell lennie a feldolgozásnak.
    Mutasd a teljes hozzászólást!
  • Az valid, mivel firebug-ban is simán beolvasom formázott alakban, de a $.each-es megoldással a fentebb írt hiba jön elő....
    Mutasd a teljes hozzászólást!
  • A get azért lehet rossz, mert böngészők simán cache-ből szolgálják ki, ha a paraméterek már szerepeltek ebben a kombinációban. Ha mindenképpen get, akkor adjál neki egy cacke-killer paramétert:
    $.get( { url: "...", ck: new Date().getTime() } );
    De mennie kell a $.post-nak is, azt biztosan nem zavarja a cache.
    Ha automatikus json parse-olást akarsz, az a {... ,dataType: "json", ... } ezt úgy láttam, hogy hiányzott.
    Innentől viszont van egy js objektumod, amin úgy iterálsz végig, ahogy csak akarsz.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd