2009-07-30 4 views
1

Meine Json Antwort wie folgt aussieht:Wie durchläuft meine JSON-Antwort mit jQuery?

[{"UserID": 1}, {"UserID", 324}] 

ich die Seite aufrufen json erhalten wie:

$.get("myurl.aspx", {blah:1}, function(data) { 

     $.each(data.items, function(i, item) { 
      alert(item.UserID); 

     }); 

}); 

Firebug ist die Fehlerberichterstattung:

G nicht definiert ist.

+1

Sie haben einen Tippfehler in zweiten Teil der Antwort , sollte es ein ':' anstelle von ',' in zweiten Objekt – RaYell

+0

gibt es ein Sicherheitsrisiko beim Senden eines Array-Literals als JSON-Antwort. Besser es zu machen '{items: [{" UserID ": 1}, {" UserID ": 324}]}'. Dann wird Ihr Javascript auch funktionieren. –

+0

Gabe, wie kann ich diesen Items Key hinzufügen? – mrblah

Antwort

2

Es scheint, dass Ihre Antwort kein echtes JSON-Objekt ist. Beachten Sie, dass in Ihrer Antwort ein Komma anstelle eines Doppelpunkts vorhanden ist.

Wenn dies nur ein Tippfehler ist, überprüfen Sie die Anfrage und Antwort in der Firebug-Konsole (auf der Registerkarte Net), um zu sehen, welche Daten an die myurl.aspx Seite gesendet werden. Sie sollten Ihre AJAX-Anfrage sowie die Daten sehen, die zurück auf Ihre Seite gesendet werden.

6

Ich glaube, Sie dies wollen, anstatt da Ihre Daten var nicht über eine Eigenschaft namens Artikel:

$.each(data, function(i, item) { 
    alert(item.UserID); 
}); 
+0

kann ich nach dem Erfolg des Ajax Anrufs überprüfen? oder sein angenommen? – mrblah

1

Die JSON Sie auf dem Laufenden ist ungültig:

[{"UserID": 1}, {"UserID", 324}] 

Beachten Sie das Komma auf dem zweiten Benutzeridentifikation.

2

Vergessen Sie nicht, einen Datentyp-Parameter an get zu übergeben, damit er JSON erwarten kann, oder stattdessen getJSON verwenden.

1

Standardmäßig kapselt ASP.Net das JSON-Objekt in ein anderes Objekt namens "d" ein. Ihre Antwort würde aussehen wie dieses dann:

{"d": [{"UserID": 1}, {"UserID": 324}]} 

Versuchen Sie folgendes:

$.get("myurl.aspx", {blah:1}, function(data) { 

    $.each(data.d, function(i, item) { 
     alert(item.UserID); 
    }); 
}); 

Check out this link für Microsofts Argumentation (unten auf der Seite.)

Verwandte Themen