Pourquoi est-ce que JSON.analyser le retour d'erreur: “unexpected token illégal”?
Je suis à l'aide d'une requête AJAX. C'est la première fois que je suis en utilisant JSON ou l'un de ses méthodes. L'ajax utilitaire renvoie un argument à la onreadystatechange rappel que le responseText ou responseXML du fichier, je suis à la requérante. À l'aide d'un simple info.txt
et request.responseText
fonctionne correctement, mais lorsque je tente info.js
et JSON.parse
il retourne "Unexpected token ILLÉGAL" quand je l'ai vérifié plusieurs fois que ma syntaxe est correcte. Voici le JSON:
JSON:
{
first: 1,
second: 2
}
- tout d'abord, jetez un oeil à jQuery moyen des appels AJAX, si vous l'utilisez, pourquoi écrivez-vous propre ajax fonction ?
- Ce qui est
info.js
? - Ce serait utile si vous avez inclus la chaîne JSON que vous essayez d'analyser dans la question 😉
- JSON.parse() doit être JSON.parse(e)
- Tout d'abord, débarrassez-vous de votre AJAX() la fonction et l'utilisation de JQuery est intégré à la place. Vous êtes juste en train de réinventer la roue. Deuxièmement, si vous obtenez une erreur d'analyse lorsqu'il essaie de lire votre code JSON, puis nous avons probablement besoin de voir votre code JSON afin que nous puissions voir ce que l'erreur d'analyse est.
Vous devez vous connecter pour publier un commentaire.
JSON.parse()
est très stricte dans la grammaire. Les paires clé/valeur doit avoir la forme:De sorte que le "premier" et "deuxième" doit être chaîne de caractères dans un objet JSON.
Changer votre JSON à la suite du code, et il devrait être le droit de
Vous semblent déjà être à l'aide de jQuery dans votre réussite de rappel. jQuery a aussi des méthodes pour effectuer des requêtes AJAX comme
$.ajax
le rendu de votre AJAX fonction personnalisée assez inutile. Dans votre cas, vous semblez être de demander un fichier javascript (.js) qui est différente de celle JSON. Donc:ou si c'est du JSON:
Ceci dit vous pouvez toujours continuer à utiliser votre méthode, mais
JSON.parse(e)
échouera toujours si votrejson.js
ne contient pas une chaîne JSON valide. Pour vérifier qu'il contient une chaîne JSON valide vous pourriez valider sur http://jsonlint.com