2011-05-27 3 views
1

J'essaie toujours de comprendre comment utiliser json .. quelqu'un peut m'aider s'il vous plaît à comprendre comment faire face à cette réponse. Ma requête est:Aide pour la gestion de la réponse json

$.ajax({ 
url: s7query, 
dataType: 'jsonp', 
success: function(){ 
// how do I deal with the response? 
} 
}); 

JSON J'Interrogation des retours (avec un 1 ou 0):

s7jsonResponse(
{"catalogRecord.exists":"1"},""); 

Tout ce que je besoin de c'est le nombre et mettez-en une variable si je peux puis exécutez une logique conditionnelle par rapport à ce résultat. Merci pour toute aide pour comprendre ceci ...

Si j'essaie de gérer le succès avec n'importe quelle fonction, firebug retourne simplement que s7jsonResponse n'est pas défini. J'ai essayé de le définir comme une variable en dehors de la demande. Maintenant, je vois dans firebug qu'il retourne le json de toutes les requêtes, mais il les renvoie comme des erreurs et dit maintenant que s7jsonResponse n'est pas une fonction. Je pense que je suis proche .. s'il vous plaît aider!

Répondre

1

Ok, j'ai raté le json p partie! Tout ce dont vous avez besoin est de définir une méthode pour s7jsonResponse.

function s7jsonResponse (jsonData, someString) { 
    alert(jsonData["catalogRecord.exists"]); 
    // deal with the response here 
} 

See this for details on JSONP

réponse initiale

J'ai remarqué que catalogRecord.exists, ce qui a un . en elle et il ne sera pas extrait. Si vous n'avez pas une bonne raison de le faire, vous pouvez le remplacer par catalogRecordExists et utiliser la solution ci-dessous.

$.ajax({ 
url: s7query, 
dataType: 'json', //removed jsonp in the last edit 
success: function(data){ // this is the method that executes on success 
      // parseJSON is not required as you already put it in dataType 
      // alert(($.parseJSON(data))["catalogRecord.exists"]); 
      alert(data["catalogRecord.exists"]); 
     } 
}); 

Remarque: Les données que vous renvoyer devez = {"catalogRecord.exists":"1"}

Vous pouvez utiliser $.getJSON faire la même chose (il appelle en interne $.ajax)

+0

Merci ... mais cela jette encore des erreurs qui ne sont pas définies s7jsonResponse – Zac

+0

la réponse sera dans la variable 'data' – Lobo

+0

Voilà l'erreur:' s7jsonResponse n'est pas defined'. Montrez-nous la fonction 's7jsonResponse'. – Rudie

1

Vous spécifiez jsonp comme dataType dans votre appel ajax. Cela indique au service Web de renvoyer une réponse jsonp, pas une simple réponse json. Donc, étant donné la réponse que vous obtenez, vous devez définir une fonction nommée s7jsonResponse qui prend deux arguments. Le premier devrait être un objet JSON, et vous devrez regarder l'API pour obtenir la seconde parce que c'est vide dans l'exemple que vous nous donnez.

Dans votre méthode s7jsonResponse, vous pouvez ensuite regarder les données renvoyées, mais comme Lobo le signale, vous avez le point dans le nom. Pour cette raison, vous devrez accéder à la propriété en utilisant la notation de parenthèse. Quelque chose comme:

function s7jsonResponse(obj, nothing) 
{ 
    var exists = obj["catalogRecord.exists"]; 
    // do your stuff with your 1 or 0 which is stored in exists 
} 
+0

Remerciez vous me manquez lire comme json-avec-ap. – Lobo