2010-06-17 2 views
0

J'ai le code suivantproblème jQuery getJSON lorsque la demande n'est pas retourné comme JSON

jQuery.getJSON(encodeURI(strUrl), {address:address,state:state, zip:zip},function(data){ 
    alert('HELLO World!'); 
}); 

Si pour une raison quelconque le strUrl renvoie une chaîne qui n'est pas au format JSON la fonction de rappel obtient jamais appelé. Est-il possible de savoir si la réponse est au format json ou si quelque chose s'est mal passé dans le message?

+0

Je ne pense vraiment pas, c'est une bonne idée d'évaluer (et donc d'exécuter) un résultat que vous ne pouvez pas faire confiance (vous ne savez même pas, si c'est syntaxiquement correct)! Ça pourrait faire n'importe quoi. –

+0

@chris_l Absolument, mais quelques erreurs se produisent et le résultat attendu est dans un mauvais format. Vous devriez éviter cela, c'est vrai, mais des bugs existent. Rappelez-vous, "en théorie, la pratique et la théorie sont les mêmes, en pratique, elles ne le sont pas". Vous devriez couvrir toutes vos bases quand vous le pouvez. – Seb

+0

@Seb Entièrement d'accord, parce que j'ai exactement la même attitude à ce sujet! Mais dans ce cas, il me semble que l'OP * pourrait être à deux pas d'accepter tout ce qui est JavaScript syntaxiquement correct (même si le contenu est malveillant). 'eval' ne prend malheureusement pas seulement des données JSON, mais n'importe quel JavaScript. Donc je pense, cet avertissement est justifié. –

Répondre

1

jQuery.getJSON ne vous permet pas de définir une fonction de rappel d'erreur.

Vous devez utiliser jQuery.ajax à la place, en définissant le dataType sur json et définir les variables de configuration restantes comme définies par défaut par le paramètre getJSON.

+0

Oui, je pensais que c'était le seul moyen. Ill juste obtenir le résultat, vérifiez si son format est le bon et continuez. Merci – Bathan