2010-09-02 17 views
38

Por alguna razón, me estoy poniendo este mensaje de error:error: SyntaxError no detectada: símbolo inesperado <

Uncaught SyntaxError: Unexpected token < 

Para esta línea de código:

title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>', 

En este contexto:

$(document).ready(function() { 
    $('#infobutton').click(function() { 
     $('#music_descrip').dialog('open'); 
    }); 
     $('#music_descrip').dialog({ 
      title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>', 
      autoOpen: false, 
      height: 375, 
      width: 500, 
      modal: true, 
      resizable: false, 
      buttons: { 
       'Without Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'no', { expires: 365 * 10 }); 
       }, 
       'With Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'yes', { expires: 365 * 10 }); 
       } 
      } 
     }); 
    }); 

Creo que todo debería estar bien, pero no entiendo por qué el < de alguna manera está tirando esto ..

¡whoops, olvidó mostrar dónde está sucediendo esto! Mis malos,

http://www.marioplanet.com/index.asp

¿Alguna idea?

+3

Yo tampoco no entiendo ¿Tal vez le gustaría compartir un código y explicar lo que está tratando de hacer, etc.? Mostrar el error es una cosa, pero si quieres entender de dónde viene este error, necesitamos ver qué lo está causando (lo que sin duda es tu código). También etiquetar su pregunta con la etiqueta 'error' no le aporta mucha información valiosa. –

+2

Eso no es realmente una línea de código. Quiero decir, no puedes ejecutarlo. Al menos danos suficiente contexto para ver una declaración completa. – recursive

+0

K, mi mal, he tratado de darle un poco más de contexto, y me olvidé de dar un enlace, que originalmente tenía la intención de hacer ... – Qcom

Respuesta

37

Este es un problema del navegador en lugar de un problema de javascript o JQuery; está intentando interpretar el corchete angular como una etiqueta HTML.

trate de hacer esto cuando la configuración de los archivos JavaScript:

<script> 
//<![CDATA[ 

    // insert teh codez 

//]]> 
</script> 

Alternativamente, mueva el Javascript en un archivo separado.

Editar: Ahh .. con ese enlace lo he rastreado. Lo que dije fue que el problema no era el problema en absoluto. esta es la cuestión, despojado de la página web:

<script type="text/javascript" 
    $(document).ready(function() { 
    $('#infobutton').click(function() { 
     $('#music_descrip').dialog('open'); 
    }); 
     $('#music_descrip').dialog({ 
      title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>', 
      autoOpen: false, 
      height: 375, 
      width: 500, 
      modal: true, 
      resizable: false, 
      buttons: { 
       'Without Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'no', { expires: 365 * 10 }); 
       }, 
       'With Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'yes', { expires: 365 * 10 }); 
       } 
      } 
     }); 
    }); 

¿Puedes encontrar el error? Está en la primera línea: la etiqueta <script no está cerrada. Debe ser <script type="text/javascript">

Mi sugerencia anterior sigue en pie, sin embargo: usted debe incluir guiones intra-etiquetados en un bloque CDATA, o moverlos a un archivo vinculado por separado.

Ese no era el problema aquí, pero habría mostrado el problema real más rápido.

+0

Oh wowwwwwww ... Gracias por el lugar, pero eso fue bastante cojo, de todos modos, moví el js a un archivo separado para un código más limpio y capacidad de mantenimiento de todos modos. ¡Gracias! – Qcom

+0

¿Puedes ver esas excepciones en jquery? Es decir, si mi método de éxito obtiene estas excepciones no detectadas, me gustaría atraparlo y mostrar algún mensaje de error al usuario. – noobcode

+0

@noobcode Si no estructura su marcado correctamente, el motor de JavaScript va a fallar miserablemente o no empezará en absoluto. Cómo se manejan los errores en el marcado son específicos del navegador y no estoy seguro de que proporcionen un mecanismo que pueda engancharse para darle al usuario un mensaje de error de tipo general: "Me equivoqué con el sitio web que está tratando de ver". – Randolpho

-3

No sé si recibiste la respuesta. Hoy me encontré con este problema y pensé que tenía una posible respuesta correcta: no colocas el archivo de script en el lugar correcto.

La mayoría de las personas no cumplen con este problema porque ponen las secuencias de comandos en su directorio de servidor directamente. Me encuentro con esto porque hago un enlace del archivo fuente (el archivo html) al directorio raíz del servidor. No vinculé los archivos de script, y no sé cómo los encontrará nginx. Pero no están cargados correctamente.

Después de vincular todos los archivos al directorio raíz del servidor, problema resuelto.

-1

Suele funcionar cuando se cambia el nombre del directorio, donde está el archivo. Me funcionó cuando lo moví de "js /" a "../js"

8

Tenía exactamente el mismo síntoma, y ​​este era mi problema, muy difícil de seguir, así que espero que ayude a alguien .

Estaba usando JQuery parseJSON() y el contenido que estaba intentando analizar no era en realidad JSON, sino una página de error que se estaba devolviendo.

9

Yo también recibí este error cuando desarrollé una aplicación Backbone usando el estado de inserción HTML5 junto con un .htaccess que redirige los archivos desconocidos a index.html.

Resulta que al visitar una URL como /something/5, mi /index.html se estaba sirviendo efectivamente en /something/index.html (gracias a mi .htaccess). Esto tuvo el efecto de romper todas las URL relativas a mis archivos JavaScript (desde el interior de index.html), lo que significaba que deberían tener 404'd en mí.

Sin embargo, de nuevo debido a mi htaccess, en lugar de 404'ing al intentar recuperar los archivos JS, en su lugar devolvieron mi index.html. Así, al navegador se le asignó un index.html por cada archivo JavaScript que intentó incorporar, y cuando evaluó el HTML como si fuera JavaScript, devolvió un error JS debido al < líder (de mi etiqueta en index.html) .

La solución en mi caso (ya que estaba sirviendo el sitio desde dentro de un subdirectorio) era agregar una etiqueta base en mi cabeza html.

<base href="/my-app/">

+1

Esto solucionó mi problema - en mi caso, utilicé - ¡nunca pensé que era un problema de htaccess! –

+0

Me encontré con un problema similar al usar reaccionar-enrutador con rutas como "usuario /: ID de usuario". Al agregar la etiqueta base al frente de mis URL de recursos, se solucionó. Gracias @ jeff-h! – Tim

+0

esto es cierto, pero una consecuencia del problema más general como se describe en [respuesta de david.barkhuizen] (https://stackoverflow.com/a/39034617/3645375) –

4

Normalmente esto sucede cuando usted está tratando de cargar un recurso que no sea HTML (por ejemplo, el archivo de script de la biblioteca jQuery tipo text/javascript) y el servidor, en lugar de devolver el recurso JS espera, vuelve HTML en su lugar, típicamente una página 404.

El navegador intenta analizar el recurso como JS, pero como lo que se devolvió fue una página HTML, el análisis falla con un error de sintaxis, y dado que una página HTML normalmente comienza con un carácter <, esta es la carácter que se resalta en la excepción de error de sintaxis.

+0

¿Hay alguna posibilidad de desactivar este comportamiento? No entienda por qué jquery entra en problemas con las etiquetas de recursos –

-1

Si enfrenta este problema solo en Chrome y en IE, todo está bien, simplemente active el botón de verificación "Deshabilitar caché" en Dev Tools (F12 -> pestaña "Red") y borre el historial en ultima hora.

Tuve este problema y la solución anterior funcionó para mí.

+1

No publique respuestas idénticas a preguntas múltiples. Publique una buena respuesta, luego vote/marque para cerrar las otras preguntas como duplicados. Si la pregunta no es un duplicado, * adapte sus respuestas a la pregunta. * –

-1

intento de sustituir el texto/javascript text/html a continuación, guardar el navegador y recarga nota luego traerlo de vuelta a text/javascript .. no sé, pero por razones desconocidas éste trabaja conmigo .. Estoy buscando y copiando y pegando y accidentalmente deshago lo que estoy escribiendo, entonces boom kablooey funcionó 0.O por cierto yo solo soy novato ... lo siento, pensé que podría ayudar ...

Cuestiones relacionadas