4 Stimmen

Wie kann ich JSON interpretieren, das von jQuery.ajax zurückgegeben wird und eine POST-Aktion verwendet?

Ich habe den folgenden jQuery-Code:

$.ajax({
    type: "POST",
    url: "Services/MyService.asmx/Select",
    dataType: "json",
    data: "{'data':'test'}",
    contentType: "application/json; charset=utf-8",
    success: function(msg){ 
                alert(msg); 
             },
    error: function(xhr){ alert(xhr.statusText);}                
});

Der Aufruf der Methode gibt folgendes zurück:

"{"FirstName":"James"}"

Wenn ich den Wert zurückbekomme, gibt mein Alert die vollständige json-Zeichenfolge zurück. Wenn ich versuche zu tun alert(msg.FirstName) erhalte ich "undefiniert".

Ich habe viele Beispiele gesehen, die die getJSON()-Methode verwenden; ich habe jedoch keine Möglichkeit gesehen, diese für ein POST-Verb zu verwenden. Kann jemand mich in die richtige Richtung zeigen, wo ich falsch gehe? Basierend auf der Jquery-Dokumentation, sollte der Rückgabewert den gleichen dataType (json) sein, so dass ich nicht sicher bin, was ich vermisse.

EDIT: Ich habe in meinem Dienst nachgeschaut und es passt zu den Beispielen, die ich in Bezug auf die Methodensignatur gefunden habe, die einen String zurückgibt. Ich habe auch bestätigt, dass der Antworttyp application/json ist.

EDIT2: Ich habe die Antwort aktualisiert, um die Anführungszeichen einzuschließen. Ich verwende auch einen benutzerdefinierten JavaScriptConverter, um die JSON-Serialisierung durchzuführen. Der benutzerdefinierte Konverter nimmt einfach meine Objekteigenschaften (in diesem Fall FirstName) und lädt sie und ihren Wert in eine Dictionary-Sammlung, die die ASP.Net AJAX Extensions v1.0 leicht serialisieren kann.

EDIT3: Bei der Untersuchung des Problems, das ich mit eval() hatte (es verursachte ein Expected ";" Fehler), bemerkte ich, dass die json-Eigenschaftsnamen auch in Anführungszeichen eingeschlossen waren. Nachdem ich die Anführungszeichen aus dem Eigenschaftsnamen (nicht aus dem Wert) entfernt hatte, funktionierte eval() wieder. Ich untersuche jetzt die Serverseite dieses Problems.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X