2010-10-20 17 views
165

Ho qualche codice JavaScript che funziona in FireFox ma non in Chrome o IE.Errore JavaScript (Uncaught SyntaxError: Inaspettato fine dell'input)

Nella console di Chrome JS ottengo l'errore seguente:

"Uncaught SyntaxError: Unexpected end of input".

Il codice JavaScript che sto usando è:

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

Dice l'errore è l'ultima riga che è}) ;

+1

So che il V8 di Chrome, per un 'DELETE' sul server se la risposta era 200' successo' invece di un [204] (http://tools.ietf.org/html/rfc2616#section-10.2 .5) 'successo - nessuna risposta 'Otterrei anche questo errore. Basta fare un salto nel caso in cui qualcuno ottenga anche questo. –

risposta

336

Aggiungi un secondo });.

Se correttamente rientrato, il codice legge

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

Non si può mai chiuso la esterna $(function() {.

+228

La lezione è, ** rientra sempre il tuo codice ** (e indentalo correttamente). – SLaks

+2

Oh uomo, vorrei che il mio VIM avesse rilevato quell'errore di sintassi. Non posso credere quanto tempo finisco per sprecare a volte con errori di sintassi incuranti. – HeyWatchThis

+3

La lezione è, usa sempre un buon editor con buoni plugin, in grado di rilevare l'accoppiamento tra parentesi, evidenziarlo o persino riparare i problemi. –

14

Formattazione del codice un po ', è stata chiusa solo la funzione hover interna. Non hai chiuso le parti esterne, segnato sotto ....

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

Nel mio caso, è finito per essere un semplice numero doppio citazione nel mio bookmarklet, ricordate di usare solo apici su bookmarklets. Nel caso in cui questo aiuti qualcuno.

34

http://jsbeautifier.org/ è utile per indentare il codice JS minificato.

Inoltre, con Google Chrome è possibile utilizzare "pretty print". Vedere l'esempio screenshot qui sotto che mostra jquery.min.js da Stack Overflow destra ben rientrato dal mio browser :)

enter image description here

84

Nel mio caso, stavo cercando di analizzare un JSON vuoto:

JSON.parse(stringifiedJSON); 

In altre parole , quello che è successo è stato il seguente:

JSON.parse(""); 
+2

Questo, sfortunatamente, include '$ .parseJSON' di jquery 1.11.2 –

2

Ho ricevuto questo errore quando stavo cercando di scrivere un bookmarklet javascript. Non riuscivo a capire cosa lo stesse causando. Ma alla fine ho provato la codifica URL del bookmarklet, tramite il seguente sito web: http://mrcoles.com/bookmarklet/ e poi l'errore è andato via, quindi deve essere stato un problema con alcuni caratteri nel codice javascript interpretati come speciali caratteri di controllo URL.

+2

Ho avuto un // commento nel mio js, ​​che ha commentato un po 'più di quello che volevo da quando lo ho incollato nel l'url del bookmarklet rendeva l'intero codice un one-liner e // era nel mezzo del codice. – mflodin

2

Questo errore è causato principalmente dalle chiamate restituite vuote ajax quando si tenta di analizzare un numero vuoto Json.

per risolvere questo test se i dati restituiti è vuoto

  $.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

ho ottenuto questo da quando ho avuto un commento in un file stavo aggiungendo ai miei JS, motivo davvero imbarazzante per quello che stava succedendo - anche se quando facendo clic sul file VM che è pre-renderizzato e rileva l'errore, scoprirai qual è stato esattamente l'errore, nel mio caso è stato semplicemente decommentare un codice che stavo usando.

0

Nel mio caso, è stato causato da uno (0) mancante in javascript:void(0) in un ancoraggio.

Problemi correlati