J'exécute un appel AJAX dans mon script MooTools, cela fonctionne bien dans Firefox mais dans Chrome, j'obtiens une Uncaught SyntaxError: Unexpected token :
erreur, je ne peux pas déterminer pourquoi. Commenter du code pour déterminer où se trouve le mauvais code ne donne rien, je pense que cela peut être un problème avec le retour du JSON. En vérifiant dans la console, je vois le JSON retourné est le suivant:
{"votes":47,"totalvotes":90}
Je ne vois aucun problème, pourquoi cette erreur se produirait-elle?
vote.each(function(e){
e.set('send', {
onRequest : function(){
spinner.show();
},
onComplete : function(){
spinner.hide();
},
onSuccess : function(resp){
var j = JSON.decode(resp);
if (!j) return false;
var restaurant = e.getParent('.restaurant');
restaurant.getElements('.votes')[0].set('html', j.votes + " vote(s)");
$$('#restaurants .restaurant').pop().set('html', "Total Votes: " + j.totalvotes);
buildRestaurantGraphs();
}
});
e.addEvent('submit', function(e){
e.stop();
this.send();
});
});
javascript
mootools
google-chrome
trobrock
la source
la source
Réponses:
Voir des erreurs rouges
dans l'onglet de la console de votre développeur Chrome, il y a une indication HTML dans le corps de la réponse.
Ce que vous voyez réellement, c'est la réaction de votre navigateur à la ligne supérieure inattendue
<!DOCTYPE html>
du serveur.la source
Unexpected token :
. Votre réponse n'a aucun rapport avec le problème d'OP.Juste un FYI pour les personnes qui pourraient avoir le même problème - je devais juste obliger mon serveur à renvoyer le JSON en tant qu'application / json et le gestionnaire jQuery par défaut fonctionnait bien.
la source
application/json
résoudre l'erreur. Je n'utilise pas JSONP.Cela vient de m'arriver, et la raison n'était aucune des raisons ci-dessus. J'utilisais la commande jQuery getJSON et j'ajoutais
callback=?
pour utiliser JSONP (car j'avais besoin d'aller sur plusieurs domaines), et je renvoyais le code JSON{"foo":"bar"}
et obtenais l'erreur.C'est parce que j'aurais dû inclure les données de rappel, quelque chose comme
jQuery17209314005577471107_1335958194322({"foo":"bar"})
Voici le code PHP que j'ai utilisé pour y parvenir, qui se dégrade si JSON (sans callback) est utilisé:
J'espère que cela aidera quelqu'un à l'avenir.
la source
Je viens de résoudre le problème. Il y avait quelque chose qui causait des problèmes avec un appel de demande standard, c'est donc le code que j'ai utilisé à la place:
Si quelqu'un sait pourquoi l'objet Request standard me posait des problèmes, j'aimerais le savoir.
la source
this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
- allez comprendre$$
là-bas?J'ai pensé ajouter mon problème et ma résolution à la liste.
J'obtenais:
Uncaught SyntaxError: Unexpected token <
et l'erreur pointait vers cette ligne dans ma déclaration de réussite ajax:J'ai découvert plus tard qu'en plus des résultats json, du HTML était envoyé avec la réponse car j'avais une erreur dans mon PHP. Lorsque vous obtenez une erreur dans PHP, vous pouvez le configurer pour vous avertir avec d'énormes tables orange et ces tables étaient ce qui rejetait le JSON.
J'ai découvert cela en faisant simplement un
console.log(response)
pour voir ce qui était réellement envoyé. Si c'est un problème avec les données JSON, essayez simplement de voir si vous pouvez faire un console.log ou une autre instruction qui vous permettra de voir ce qui est envoyé et ce qui est reçu.la source
Lorsque vous demandez votre fichier JSON, le serveur renvoie l'en-
Content-Type
tête JavaScript (text/javascript
) au lieu de JSON (application/json
).Selon la documentation de MooTools :
En résultat, MooTools essaie d'évaluer votre JSON en tant que JavaScript, et lorsque vous essayez d'évaluer un tel JSON:
comme JavaScript, l'analyseur traite
{
et}
comme une portée de bloc au lieu de la notation d'objet. C'est la même chose que d'évaluer le "code" suivant:Comme vous pouvez le voir,
:
c'est totalement inattendu là-bas.La solution consiste à définir un en-
Content-Type
tête correct pour le fichier JSON. Si vous l'enregistrez avec l'.json
extension, votre serveur devrait le faire tout seul.la source
Il semble que votre réponse soit évaluée d'une manière ou d'une autre. Cela donne la même erreur dans Chrome:
Cela est dû au fait que les accolades '{...}' sont interprétées par javascript comme un bloc de code et non comme un objet littéral comme on pourrait s'y attendre.
Je regarderais la fonction JSON.decode () et verrais s'il y a un eval là-dedans.
Problème similaire ici: Eval () = jeton inattendu: erreur
la source
Si rien n'a de sens, cette erreur peut également être causée par une erreur PHP intégrée à html / javascript, telle que celle ci-dessous
Ce n'est pas le
<br />
etc dans le code inséré dans html par PHP qui est à l'origine de l'erreur . Pour corriger ce type d'erreur (supprimer l'avertissement), utilisez ce code au débutPour afficher, cliquez avec le bouton droit sur la page, «afficher la source», puis examinez le code HTML complet pour repérer cette erreur.
la source
Erreur " SyntaxError non interceptée: jeton inattendu " lorsque vos données renvoient un format json incorrect, dans certains cas, vous ne savez pas que vous avez un format json incorrect.
veuillez le vérifier avec alert (); fonction
votre message reçu doit être: {"firstName": "John", "lastName": "Doe"}
et vous pouvez ensuite utiliser le code ci-dessous
sans erreur " Uncaught SyntaxError: Uncaught token "
mais si vous vous trompez de format json
ex:
ou
afin que vous n'ayez pas le bon format json, veuillez le corriger avant JSON.decode ou JSON.parse
la source
console.log()
au lieu dealert()
pour le débogage.Cela m'est également arrivé aujourd'hui. J'utilisais EF et renvoyais une entité en réponse à un appel AJAX. Les propriétés virtuelles de mon entité provoquaient une erreur de dépendance cyclique qui n'était pas détectée sur le serveur. En ajoutant l'attribut [ScriptIgnore] sur les propriétés virtuelles, le problème a été résolu.
Au lieu d'utiliser l'attribut ScriptIgnore, il serait probablement préférable de simplement renvoyer un DTO.
la source
Cela est arrivé parce que j'ai une règle de configuration dans mon serveur express pour renvoyer tout 404 vers
/#
plus quelle que soit la demande d'origine. Permettre au routeur angulaire / js de gérer la demande. S'il n'y a pas de route js pour gérer ce chemin, une requête/#/whatever
est adressée au serveur, qui n'est qu'une requête pour/
la page Web entière.Donc par exemple si je voulais faire une demande
/correct/somejsfile.js
mais que je ne l'ai pas tapé,/wrong/somejsfile.js
la demande est faite au serveur. Cet emplacement / fichier n'existe pas, donc le serveur répond par un302 location: /#/wrong/somejsfile.js
. Le navigateur suit volontiers la redirection et la page Web entière est renvoyée. Le navigateur analyse la page comme js et vous obtenezDonc, pour aider à trouver le chemin / la requête incriminée, recherchez 302 requêtes.
J'espère que cela aide quelqu'un.
la source
J'ai eu le même problème et il s'est avéré que le Json renvoyé par le serveur n'était pas un Json-P valide. Si vous n'utilisez pas l'appel comme appel interdomaine, utilisez Json standard.
la source
J'ai eu un "
SyntaxError: Unexpected token I
" quandjQuery.getJSON()
j'essayais de dé-sérialiser une valeur à virgule flottante deInfinity
, encodée commeINF
, ce qui est illégal en JSON.la source
Dans mon cas, j'ai rencontré la même erreur, lors de l'exécution de l'application spring mvc en raison d'un mauvais mappage dans mon contrôleur mvc
j'ai changé le mappage ci-dessus en
ou
la source
Pour moi, l'ampoule s'est allumée lorsque j'ai consulté la source sur la page dans le navigateur Chrome. J'avais une parenthèse supplémentaire dans une instruction if. Vous verrez immédiatement le cercle rouge avec une croix sur la ligne défaillante. C'est un message d'erreur plutôt inutile, car l'erreur de syntaxe Uncaught: un jeton inattendu ne fait aucune référence à un numéro de ligne lorsqu'il apparaît pour la première fois dans la console de Chrome.
la source
J'ai fait du mal dans ce
J'ai déjà initialisé la
fs
variable, mais encore une fois, je metsvar
la deuxième ligne, celle-ci donne aussi ce genre d'erreur ...la source
Pour ceux qui rencontrent cela dans AngularJs 1.4.6 ou similaire, mon problème était que angular ne trouvait pas mon modèle car le fichier au
templateUrl
(chemin) que j'ai fourni était introuvable. Je devais juste fournir un chemin accessible et le problème a disparu.la source
Dans mon cas, c'était une URL erronée (inexistante), alors peut-être que votre `` envoi '' en deuxième ligne devrait être autre ...
la source
Mon erreur a été d' oublier les devis simples / doubles autour de l'URL en javascript:
si mauvais code était:
et code correct :
la source
SyntaxError non interceptée: jeton inattendu}
Chrome m'a donné l'erreur pour cet exemple de code:
et l'a résolu en fixant le clic pour être comme
Mais l'erreur n'a rien à voir avec le problème.
la source