Json! jsonData has no properties

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Json! jsonData has no properties

    Hallo !

    Ich versuche gerade ein DB-Abfrageergebniss mit Hilfe von JSON an eine JS-Funktion zu senden.

    PHP-Code:
    $erg $db->query("SELECT k.*,
                                        s.name
                                        FROM kommentare k
                                        LEFT JOIN schueler s ON s.id = k.schueler_id
                                        WHERE k.frageantwort_id = '
    $id'
                                "
    );
                
    $res2 $erg->fetchAll();
                
                
    $comments = array('comments' => array($res2[0], $res2[1],$res2[2]));
                
    $ausgabe $json->encode($comments);
                print(
    $ausgabe); 
    Das Json-Format kommt auch korrekt an. Nun möchte ich auf die einzelnen Werte zugreifen.



    PHP-Code:
    function kommentar_view(id)
        {
            
            
    url "/join/test/?id="+id+"&ajax=3";
            
            $.
    ajax({
                
    type"GET",
                
    urlurl,
                
                
    success: function(msg) {    
                    
                    if(
    msg){
                    
                        var 
    jsonData = eval('(' msg.responseText ')');  
                        var 
    test jsonData.comments[0].name;
                        
    alert(test);
                    }else{
                        
                    }
            
                }
            });
                
        } 
    Wenn ich nun alert(test) ausgebe, bekomme ich dirket den Fehler: "jsonData has no properties". Die Position gibt es aber. Wenn ich jsonData mir anzeigen lassen möchte, bekomme ich "undefined" als Ausgabe. Das scheint auch das Problem zu sein?!

    Was kann ich noch ausprobieren?

  • #2
    AW: Json! jsonData has no properties

    Anhand des Firefox Debugger, ist mir auf gefallen das onreadystatechange()
    bei jeder neuen Anfragen einen anderen Wert hat. Kann dort der Fehler liegen?


    PHP-Code:
    success("; \n\n\n\n;{"comments":[{"id":"12","frageantwort_id":"29"
    ,"
    schueler_id":"1","kategorie_id":"5","kom...")
    onreadystatechange(-2) 

    Kommentar


    • #3
      Was genau liefert "/join/test/?id="+id+"&ajax=3" zurück?
      (Von Hand im Browser aufrufen, Strg+A, Strg+C und hier Strg+V bitte - oder besser, sogar ein online-Beispiel geben, wo man sich das selbst angucken kann.)

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Als Ergebnis (msg) bekomme ich diesen Code:

        PHP-Code:
        {"comments":[{"id":"12","frageantwort_id":"29","kommentar":"sdsd","erstellt":"2008-10-24 09:20:13","name":"Susi"},
        {
        "id":"13","frageantwort_id":"29","kommentar":"xcxc","erstellt":"2008-10-24 09:24:20","name":"Katia"},
        {
        "id":"14","frageantwort_id":"29","kommentar":"test","erstellt":"2008-10-24 12:17:28","name":"Melli"}]}; 
        Wie kann ich nun auf die einzelnen Positionen zugreifen?

        PHP-Code:
        var jsonData = eval('(' msg.responseText ')');  
        var 
        test msg.comments[0].id
        Wenn ich test mir anzeigen lasse, bekomme ich die Fehlermeldung "msg.comments has no properties"

        Kommentar


        • #5
          Original geschrieben von der_meier_hans
          PHP-Code:
          {"comments":[{"id":"12","frageantwort_id":"29","kommentar":"sdsd","erstellt":"2008-10-24 09:20:13","name":"Susi"},
          {
          "id":"13","frageantwort_id":"29","kommentar":"xcxc","erstellt":"2008-10-24 09:24:20","name":"Katia"},
          {
          "id":"14","frageantwort_id":"29","kommentar":"test","erstellt":"2008-10-24 12:17:28","name":"Melli"}]}; 
          Das letzte Semikolon ist zu viel... bist du sicher, dass das nicht irgendwo anders her kommt?

          Ansonsten, wenn ich das Semikolon weg mache, geht es bei mir mit
          alert(msg.comments[0].kommentar);

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Danke!

            Jetzt ist nur die Frage , wo kommt dieses letzte Semikolon her?

            Liegt es vielleicht an der Abfrage? Ich übergebe direkt das Abfrageergebnis.

            Was hat bloß "\n\n\n\n" in der JSON-Syntax zu suchen?

            PHP-Code:

            $erg 
            $db->query("SELECT k.*,
                                    s.name
                                FROM kommentare k
                LEFT JOIN schueler s ON s.id = k.schueler_id
                            WHERE k.frageantwort_id = '
            $id'
                                        "
            );
                        
            $res2 $erg->fetchAll();
                        
                        
            $comments = array('comments' => array($res2));
                        
            $ausgabe $json->encode($comments);
                        print(
            $ausgabe); 
            Die Ausgabe kann nur von dieser Abfrage kommen.
            Wenn ich im JavaScript msg ausgebe, bekomme ich die
            Json Syntax.

            Kommentar


            • #7
              Du hast offensichtlich nicht die gesamte Datei gepostet.
              Alles was davor/dahinter kommt kann auch eine Ausgabe generieren.

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Hallo!

                Ich habe das nun eingebunden:
                var jsonData = JSON.parse(msg.responseText);
                alert (jsonData);

                msg = meine Rückgabewert:

                PHP-Code:
                {"comments":[{"id":"66","frageantwort_id":"35",
                "schueler_id":"2",
                "kategorie_id":"5","kommentar":"das ist ein kommentar","erstellt":"2008-11-04 11:19:14","name":"Frank"},
                {
                "id":"70","frageantwort_id":"35","
                schueler_id"
                :"1",
                "kategorie_id":"5","kommentar":"test","erstellt":"2008-11-05 10:20:49","name":"Kati"}]} 
                
                Fehlermeldung:
                text has no properties
                test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
                parse(undefined, undefined)

                Ich weiß nicht wo ich nachdem Fehler suchen soll.

                Liegt es am JSON encode?

                Danke
                Zuletzt geändert von der_meier_hans; 05.11.2008, 12:44.

                Kommentar

                Lädt...
                X