Chrome: Untaught SyntaxError: fin inattendue de l’entrée

Lors du chargement de ma page dans Google Chrome, je reçois une vague erreur dans la console:

SyntaxError Uncaught: fin inattendue de l’entrée

Je n’ai aucune idée de ce qui le cause. Comment ferais-je pour déboguer cette erreur?

Cette erreur particulière est un fait ennuyant à propos de V8. Dans la plupart des cas, votre JavaScript est cassé d’une certaine manière. Par exemple, il manque un } ou quelque chose comme ça.

Exemple donné, cela donnera “Fin de saisie inattendue”:

 eval('[{"test": 4}') // notice the missing ] 

Mais la cause première des problèmes semble être que l’URL JSON demandée contient un type de contenu text/html que Chrome essaie apparemment d’parsingr en HTML, ce qui entraîne la fin inattendue de l’entrée en raison du fait que l’image incluse les balises sont analysées.

Essayez de définir le Content-Type sur text/plain Je pense qu’il devrait résoudre les problèmes.

Néanmoins, le V8 pourrait faire un meilleur travail pour dire exactement la saisie a pris fin de manière inattendue.

Essayez Firebug pour Mozilla – il affichera la position des éléments manquants } .

http://getfirebug.com/

Voir mon cas sur une autre question similaire :

Dans mon cas, j’essayais d’parsingr un JSON vide:

 JSON.parse(ssortingngifiedJSON); 

En d’autres termes, ce qui s’est passé était le suivant:

 JSON.parse(""); 

J’obtiens cette erreur lorsque j’ai assigné un caractère d’accolade fermant ( } ) dans le code JavaScript. Vérifiez que vos accolades sont bien équilibrées.

Pour mémoire, pour quiconque essaie de trouver les différentes causes de cette erreur. Un atsortingbut de données HTML5 vide

 data-mydata = '' 

provoque également l’erreur. Vous devriez vérifier quand la valeur de données est une chaîne nulle et ne pas inclure l’atsortingbut du tout. Il va sans dire que ceci est largement pertinent pour le HTML généré par script.

Le problème pour moi était que je faisais $ .ajax avec dataType: "json" pour une requête POST qui dataType: "json" un HTTP 201 (créé) et aucun corps de requête. La solution consistait simplement à supprimer cette clé / valeur.

JSHint est bon pour trouver l’emplacement des parenthèses manquantes ou de la mauvaise syntaxe.

Une autre cause de cette erreur: si votre API répond intentionnellement sans corps de réponse, mais répond par un code d’état 200 OK au lieu d’un code d’état 204 No Content . Certaines bibliothèques JavaScript peuvent ne pas répondre correctement aux types de contenu inattendus en l’absence de contenu. Utilisez donc le code d’état correct!

Il y aura certainement un crochet ouvert qui a causé l’erreur.

Je suggère que vous ouvriez la page dans Firefox, puis ouvrez Firebug et vérifiez la console – il affichera le symbole manquant.

Exemple de capture d’écran:

Firebug mettant en évidence l'erreur

Mon problème était avec le cache Google Chrome. J’ai testé ceci en exécutant mon application Web sur Firefox et je n’ai pas eu cette erreur là. Alors j’ai décidé d’essayer de vider le cache de Google Chrome et cela a fonctionné.

J’ai fait face à un problème similaire en utilisant la directive ui bootstrap pour angularjs – uib-datepicker, en appuyant sur la touche am / pm.

Erreur dans le gestionnaire d’événements pour (inconnu): SyntaxError: fin inattendue du timepicker angular d’entrée JSON

Il s’est avéré que c’était à cause du plugin ‘Trans-over’ (qui traduit un mot lorsqu’il est cliqué). Peut-être que ma réponse aidera quelqu’un, parce que je n’ai rien trouvé sur Internet.

Comme il s’agit d’une opération asynchrone, onreadystatechange peut se produire avant que la valeur ne soit chargée dans responseText, essayez d’utiliser window.setTimeout(function () { JSON.parse(xhr.responseText); }, 1000); pour voir si l’erreur persiste? BOL

J’ai eu cette erreur et corrigé en ajoutant la garde sur le readyState et le status montré ici:

 var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { // Your code here } };