AJAX - Prototyp - JSON - PHP - Verständnis frage

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • AJAX - Prototyp - JSON - PHP - Verständnis frage

    Ich hoffe ich bin hier richtig.
    Ich habe eine Frage. Und zwar nutze ich das Framework Prototpy.
    Hier habe ich nun ein Request geschrieben. Der funktioniert auch wunderbar.
    Nun habe ich aber etwas beobachtet. Und zwar sieht mein PHP-Code ungefähr so aus:

    Quellcode

    1. ...
    2. $myjson = new Services_JSON();
    3. if ($ergebnis = $verbindung->query($abfrage))
    4. {
    5. while($datensatz = $ergebnis->fetch_array())
    6. {
    7. $i += 1;
    8. extract($datensatz);
    9. $array[$i]["id"] = $id;
    10. $array[$i]["cat"] = $cat;
    11. }
    12. header('X-JSON: '.trim($myjson->encode($array)));
    13. }
    Alles anzeigen


    In JavaScript habe ich nun mein JSON Objekt und durchlaufe dies mittels

    Quellcode

    1. for(_obj in json)


    Das funktioniert auch. JSON enthält in diesen Fall nur die von mit gewünschten Daten.
    Nun habe ich den PHP-Code abgeändert, wie folgt:

    Quellcode

    1. ...
    2. $myjson = new Services_JSON();
    3. if ($ergebnis = $verbindung->query($abfrage))
    4. {
    5. while($datensatz = $ergebnis->fetch_array())
    6. {
    7. extract($datensatz);
    8. $array[]["id"] = $id;
    9. $array[]["cat"] = $cat;
    10. }
    11. header('X-JSON: '.trim($myjson->encode($array)));
    12. }
    Alles anzeigen


    Ich habe also die Zählervariable entfernt. Auch dieser Code wird ausgeführt.
    Innerhalb von JavaScript sind in meinem JSON-Objekt jetzt aber nicht nur die gewünschten Daten, sonder auch ganz viele zusätzliche Methoden, was dazu führt, dass die for Schleife so nicht mehr geht.
    Mir ist klar dass ich nun mit JSON._each die treffer durchlaufen kann oder mit einer Zählergesteuerten Schleife und bis JSON.size() laufen könnte.

    Ich will aber wissen wie es zu diesen Verhalten kommt.
    Was genau hat meine Änderung bewirkt, dass deas JSON-Objekt plötzlich so viele Methoden bietet?

    MfG
    benny

    p.s.: Ich hoffe diese Frage ist nicht alt so dumm^^. Ich habe mir JavaScript, PHP sowie AJAX in Alleingang angeeignet.
  • Hi,
    Hier übrigens ein paar mehr Informationen zu [wiki]PHP und JavaScript[/wiki] findest du auch in unserem Wiki.
    Ansonsten hat das Problem nichts mit JSON zu tun, sondern ist bei allen JavaScript Objekten so.

    Kleines Beispiel aus meinem Chrome:


    Wie du siehst stammen alle Methoden vom Prototypen des Objekts (Basisobjekt).
    Mit folgender Schleife stellst du sicher, dass du nur die Attribute des eigentlichen Objekts ausliest

    Quellcode

    1. for (var key in p) {
    2. if (p.hasOwnProperty(key)) {
    3. alert(key + " -> " + p[key]);
    4. }
    5. }


    Lg