2010-10-20 14 views
165

Tengo un código JavaScript que funciona en Firefox pero no en Chrome o IE.Error de JavaScript (sin detectar SyntaxError: final inesperado de la entrada)

En la consola de Chrome JS consigo el error siguiente:

"Uncaught SyntaxError: Unexpected end of input".

El código JavaScript que estoy usando es:

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

Se dice que el error está en la última línea que es}) ;

+1

Sé que el V8 de Chrome, para un 'DELETE' en el servidor si la respuesta fue un 200' success' en lugar de un [204] (http://tools.ietf.org/html/rfc2616#section-10.2 .5) 'éxito - sin respuesta' También obtendría este error. Solo se dirige por si alguien está recibiendo esto también. –

Respuesta

336

Agregue un segundo });.

Cuando sangría correctamente, su código lee

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

Nunca se cerró el exterior $(function() {.

+228

La lección es: ** siempre aplique sangría a su código ** (y sangría correctamente). – SLaks

+2

Oh hombre, ojalá mi VIM hubiera captado ese error de sintaxis. No puedo creer cuánto tiempo termino perdiendo a veces con errores de sintaxis descuidados. – HeyWatchThis

+3

La lección es, siempre use un buen editor con buenos complementos, que puede detectar el paréntesis de los paréntesis, destacarlo o incluso reparar problemas. –

14

Formateando su código un poco, solo ha cerrado la función de desplazamiento interno. No ha cerrado las partes exteriores, marcado abajo ....

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

En mi caso, que terminó siendo un simple número doble cita en mi bookmarklet, sólo recuerdo usar comillas simples en bookmarklets. En caso de que esto ayude a alguien.

34

http://jsbeautifier.org/ es útil para sangrar su código JS minificado.

Además, con Google Chrome puede usar "bonita impresión". Vea el ejemplo siguiente captura de pantalla que muestra jquery.min.js de desbordamiento de pila derecha muy bien corrugado de mi navegador :)

enter image description here

84

En mi caso, yo estaba tratando de analizar un JSON vacío:

JSON.parse(stringifiedJSON); 

En otras palabras , lo que sucedió fue lo siguiente:

JSON.parse(""); 
+2

Esto, desafortunadamente, incluye '$ .parseJSON' de jquery 1.11.2 –

2

Recibí este error cuando intentaba escribir un bookmarklet de JavaScript. No pude entender qué lo estaba causando. Pero al final probé la codificación URL del bookmarklet, a través del siguiente sitio web: http://mrcoles.com/bookmarklet/ y luego desapareció el error, por lo que debe haber habido un problema con ciertos caracteres en el código JavaScript que se interpretan como caracteres especiales de control de URL.

+2

Tenía un // comentario en mi js, que comentaba un poco más de lo que quería desde que lo pegué en el La URL del bookmarklet hizo que todo el código fuera de una sola línea y // estaba en el medio del código. – mflodin

2

Este error es causado principalmente por llamadas ajax devueltas vacías, al intentar analizar un Json vacío.

Para resolver este examen si los datos devueltos está vacía

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

tengo esto desde que tenía un comentario en un archivo estaba añadiendo a mis JS, por muy difícil de lo que estaba pasando - aunque cuando Al hacer clic en el archivo VM que se procesó previamente y detecta el error, descubrirá cuál fue exactamente el error, en mi caso simplemente fue un comentario de algún código que estaba usando.

0

En mi caso, fue causado por la falta de (0) en javascript:void(0) en un ancla.

Cuestiones relacionadas