234 votes

Erreur JavaScript (Uncaught SyntaxError : Unexpected end of input)

J'ai un code JavaScript qui fonctionne dans FireFox mais pas dans Chrome ou IE. Dans la console JS de Chrome, j'obtiens l'erreur suivante : "Uncaught SyntaxError : Unexpected end of input".

Le code JavaScript que j'utilise est le suivant :

<script>
 $(function() {
 $("#mewlyDiagnosed").hover(function() {
    $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
 }, function() {
    $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
 });
</script>

Il est indiqué que l'erreur se situe sur la dernière ligne qui est }) ;

2 votes

Je sais que le V8 de Chrome, pour un DELETE sur le serveur si la réponse était un 200 success au lieu d'un 204 success - no response J'obtiendrais également cette erreur. Je voulais juste vous prévenir au cas où quelqu'un aurait ce problème.

454voto

SLaks Points 391154

Ajouter un deuxième }); .

Lorsqu'il est correctement indenté, votre code se lit

$(function() {
    $("#mewlyDiagnosed").hover(function() {
        $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
    }, function() {
        $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
    });
MISSING!

Vous n'avez jamais fermé l'extérieur $(function() { .

307 votes

La leçon est la suivante , toujours indenter votre code (et l'indenter correctement).

5 votes

La leçon à retenir est qu'il faut toujours utiliser un bon éditeur avec de bons plugins, qui peuvent détecter les paires de parenthèses, les mettre en évidence ou même réparer les problèmes.

1 votes

@HeyWatchThis Vous pouvez essayer Syntastic pour Vim.

96voto

falsarella Points 2674

Dans mon cas, j'ai essayé d'analyser un JSON vide :

JSON.parse(stringifiedJSON);

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

JSON.parse("");

4 votes

Malheureusement, cela inclut $.parseJSON de jquery 1.11.2

40voto

Hugo Points 420

http://jsbeautifier.org/ est utile pour indenter votre code JS minifié.

Avec également Google Chrome vous pouvez utiliser "pretty print". Voir l'exemple de capture d'écran ci-dessous montrant jquery.min.js de stackoverflow joliment indenté à partir de mon navigateur :)

enter image description here

15voto

hvgotcodes Points 55375

En formatant un peu votre code, vous avez seulement fermé la fonction de survol interne. Vous n'avez pas fermé les parties extérieures, marquées ci-dessous....

$(// missing closing)
 function() { // missing closing }
     $("#mewlyDiagnosed").hover(
        function() {
            $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
        }, 
        function() {
            $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
        });

6voto

Yëco Points 483

Dans mon cas, ça a fini par être un simple guillemet double question dans mon bookmarklet N'oubliez pas de n'utiliser que des guillemets simples pour les bookmarklets. Au cas où cela aiderait quelqu'un.

1 votes

Merci beaucoup ! Je ne savais pas que ce serait un problème

0 votes

Content que ça ait aidé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X