2009-06-11 9 views
4

Ok, je suis un peu nouveau quand il s'agit de jQuery et json. Si j'utilise json comme type de retour, puis-je récupérer responseText à partir d'un objet XMLHttpRequest?Utilisation de jQuery et JSON avec AJAX responseText?

est le code ici que j'utilise:

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]); 
     } 

     }); 

est l'utilisation de msg [0] correct si je veux sortir la réponse JSON ou suis-je manque quelque chose?

comment puis-je utiliser le code ci-dessus avec XMLHttpRequest pour obtenir le statut, responseText, etc.

merci, tout!

Répondre

1

Si vous utilisez json, vous récupérez un objet json et non un objet XML. Vous pouvez le sortir directement sans utiliser [0].

+1

200, 500, etc. ou cela reviendrait-il aussi avec l'objet XML? –

+0

Je ne suis pas sûr que vous puissiez accéder à l'état depuis le rappel, dans le cas d'un objet json, mais vous pouvez faire en sorte que votre script côté serveur ajoute l'état à l'objet json avant de l'envoyer, comme tout autre champ . Ensuite, vous pouvez le vérifier via json.status. – cloudhead

6

Pour autant que je sache, l'appel à $ .ajax retourne un objet XHR, et de ce que le responseText peut être extrait, par exemple:

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

var resp = xhr.responseText; 

Le texte de réponse contiendra une chaîne JSON, qui serait besoin d'être converti en un objet pour être utile.

Si vous souhaitez utiliser la réponse comme un objet JSON directement dans votre success: fonction, procédez comme suggéré @cloudhead et utiliser msg. Le dataType: "json" dans votre options s'occupe de la conversion pour vous. Qu'en est-il des codes de réponse?