2009-06-11 13 views
4

Ok, ich bin ein bisschen neu, wenn es um jQuery und Json geht. Wenn ich Json als meinen Rückgabetyp verwende, kann ich responseText immer noch von einem XMLHttpRequest-Objekt abrufen?Verwenden von jQuery und JSON mit AJAX responseText?

hier ist der Code, den ich benutze:

json response: {"clients": []} 

$.ajax({ 
     type: "POST", 
     url: "/myurl/whatever.php", 
     data: myData, 
     dataType: "json", 

     success: function(msg){ 
      status.html(msg[0]); 
     }, 
     error: function(msg) { 
       status.html("Error: " + msg[0]); 
     } 

     }); 

ist die Verwendung von msg [0] richtig, wenn ich ausgeben will die json Antwort oder ich etwas fehle?

wie kann ich immer noch den obigen Code mit XMLHttpRequest, um den Status zu erhalten, response usw.

Dank, alle!

Antwort

1

Wenn Sie Json verwenden, erhalten Sie ein JSON-Objekt zurück, kein XML-Objekt. Sie können es direkt ausgeben, ohne [0] zu verwenden.

+1

was ist mit den Antwortcodes; 200, 500 usw. oder würde das auch mit dem XML-Objekt zurückkommen? –

+0

Ich bin nicht sicher, dass Sie im Fall eines JSON-Objekts auf den Status innerhalb des Callback zugreifen können, aber Sie können Ihr serverseitiges Skript wie jedes andere Feld dem json-Objekt vor dem Senden hinzufügen . Dann können Sie es durch json.status überprüfen. – cloudhead

6

Soweit ich das Gespräch auf $ weiß, Schnipsel ein XHR-Objekt zurückgibt, und dass die response extrahiert werden kann, zB:

var xhr = $.ajax({ 
         url:' someInfo.php', 
         data: 'which=squirrels', 
         asynch: true 
       }); 

var resp = xhr.responseText; 

Der Antworttext wird einen JSON-String enthalten, was würde müssen in ein Objekt umgewandelt werden, das von Nutzen ist.

Wenn Sie die Antwort als JSON-Objekt verwenden möchten, direkt in Ihrem success: Funktion, tun als @cloudhead vorgeschlagen, und verwenden Sie msg. Der dataType: "json" in Ihrem options übernimmt die Konvertierung für Sie.

Verwandte Themen