2010-10-20 7 views
165

J'ai du code JavaScript qui fonctionne dans FireFox mais pas dans Chrome ou IE.Erreur JavaScript (Uncaught SyntaxError: fin d'entrée inattendue)

Dans la console JS Chrome je reçois l'erreur suivante:

"Uncaught SyntaxError: Unexpected end of input".

Le code JavaScript J'utilise est:

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

Il dit l'erreur est sur la dernière ligne qui est}) ;

+1

Je sais que le V8 de Chrome, pour un 'DELETE' sur le serveur si la réponse était un 200' succès' au lieu d'un [204] (http://tools.ietf.org/html/rfc2616#section-10.2 .5) 'succès - pas de réponse' J'obtiendrais aussi cette erreur. Mets juste la tête au cas où quelqu'un recevrait ça aussi. –

Répondre

336

Ajouter une seconde });.

Une fois correctement en retrait, votre code lit

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

Vous ne fermé la $(function() { externe.

+228

La leçon est, ** indent toujours votre code ** (et indentement correctement). – SLaks

+2

Oh mec, j'aurais aimé que mon VIM ait attrapé cette erreur de syntaxe. Je ne peux pas croire combien de temps je finis par gaspiller parfois avec des erreurs de syntaxe négligentes. – HeyWatchThis

+3

La leçon est, utilisez toujours bon éditeur avec de bons plugins, qui peuvent détecter l'appariement des parenthèses, le mettre en évidence ou même réparer les problèmes. –

14

Formater votre code un peu, vous avez uniquement fermé la fonction de survol interne. Vous avez pas fermé les parties extérieures, marquée ci-dessous ....

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

Dans mon cas, il a fini par être un simple, double guillemet question dans mon bookmarklet, souviens-toi d'utiliser uniquement des guillemets simples sur bookmarklets. Juste au cas où cela aiderait quelqu'un.

34

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

En outre, avec Google Chrome vous pouvez utiliser "jolie impression". Voir la capture d'écran d'exemple ci-dessous montrant jquery.min.js de débordement de la pile à droite bien en retrait de mon navigateur :)

enter image description here

84

Dans mon cas, je cherchais à analyser un JSON vide:

JSON.parse(stringifiedJSON); 

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

JSON.parse(""); 
+2

Cela, malheureusement, comprend '$ .parseJSON' de jquery 1.11.2 –

2

J'ai eu cette erreur lorsque j'essayais d'écrire un bookmarklet javascript. Je ne pouvais pas comprendre ce qui le causait. Mais finalement j'ai essayé d'encoder l'URL du bookmarklet, via le site Web suivant: http://mrcoles.com/bookmarklet/ et ensuite l'erreur a disparu, donc cela a dû être un problème avec certains caractères dans le code javascript étant interprétés comme des caractères spéciaux de contrôle d'URL.

+2

J'ai eu // un commentaire dans mon js, qui a commenté un peu plus que je voulais depuis le coller dans le L'url du bookmarklet a fait de l'ensemble du code un one-liner et le // était au milieu du code. – mflodin

2

Cette erreur est principalement causée par ajax appels vides, en essayant d'analyser un vide Json.

Pour résoudre ce test si les données renvoyées est vide

  $.ajax({ 
        url: url, 
        type: "get", 
        dataType: "json", 
        success: function (response) { 

         if(response.data.length == 0){ 
          // EMPTY 
         }else{ 
          var obj =jQuery.parseJSON(response.data); 
          console.log(obj); 
         } 
        } 
      }); 
0

je suis arrivé depuis que j'avais un commentaire dans un fichier que j'ajoutais à mes JS, la raison vraiment difficile à ce qui se passait - mais quand En cliquant sur le fichier qui est pré-rendu et attrape l'erreur, vous découvrirez exactement ce que l'erreur était, dans mon cas, il s'agissait simplement de décommenter un code que j'utilisais.

0

Dans mon cas, il a été causé par un (0) manquant dans javascript:void(0) dans une ancre.

Questions connexes