ti-enxame.com

Erro: SyntaxError não detectado: token inesperado <

Por algum motivo, estou recebendo esta mensagem de erro:

Uncaught SyntaxError: Unexpected token <

Para esta linha de código:

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

Neste 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 });
                }
            }
        });
    });

Eu acho que tudo deve estar pronto, mas não entendo por que o < está de alguma forma jogando isso fora ..

gritos, esqueci de mostrar onde isso está acontecendo! Minha culpa,

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

Alguma ideia?

44
Qcom

Este é um problema do navegador, e não um problema de javascript ou JQuery; está tentando interpretar o colchete angular como uma tag HTML.

Tente fazer isso ao configurar seus javascripts:

<script>
//<![CDATA[

    // insert teh codez

//]]>
</script>

Como alternativa, mova seu javascript para um arquivo separado.

Edit: Ahh .. com esse link eu localizei. O que eu disse foi que o problema não era o problema. this é o problema, retirado do site:

<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 });
                }
            }
        });
    });

Você consegue identificar o erro? Está na primeira linha: a tag <script não está fechada. Deve ser <script type="text/javascript">

Minha sugestão anterior ainda permanece, no entanto: você deveria coloca scripts intragragados em um bloco CDATA ou move-os para um arquivo vinculado separadamente.

Esse não era o problema aqui, mas teria mostrado o problema real mais rapidamente.

40
Randolpho

Também recebi esse erro ao desenvolver um aplicativo Backbone usando o estado Push HTML5 em conjunto com um .htaccess que redireciona todos os arquivos desconhecidos para index.html.

Acontece que, ao visitar um URL como /something/5, meu /index.html estava sendo efetivamente veiculado em /something/index.html (graças ao meu .htaccess). Isso teve o efeito de quebrar todos os URLs relativos aos meus arquivos JavaScript (de dentro do index.html), o que significava que eles deveriam ter 404 em mim.

No entanto, novamente devido ao meu htaccess, em vez de 404 ao tentar recuperar os arquivos JS, eles retornaram meu index.html. Assim, o navegador recebeu um index.html para cada arquivo JavaScript que tentou acessar e, quando avaliou o HTML como se fosse JavaScript, retornou um erro de JS devido ao <(da minha tag no index.html) .

A correção no meu caso (como eu estava servindo o site de dentro de um subdiretório) era adicionar uma tag base na minha cabeça html.

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

12
jeff-h

Eu tinha exatamente o mesmo sintoma, e esse era o meu problema, muito complicado de rastrear, então espero que ajude alguém.

Eu estava usando JQuery parseJSON() e o conteúdo que estava tentando analisar não era realmente JSON, mas uma página de erro que estava sendo retornada.

9
user738048

Normalmente, isso acontece quando você está tentando carregar um recurso não-html (por exemplo, o arquivo de script da biblioteca jquery como tipo text/javascript) e o servidor, em vez de retornar o recurso JS esperado, retorna HTML - normalmente uma página 404.

O navegador tenta analisar o recurso como JS, mas como o que realmente foi retornado foi uma página HTML, a análise falha com um erro de sintaxe e, como uma página HTML normalmente começa com um caractere <, esse é o caractere destacado na exceção de erro de sintaxe.

7
david.barkhuizen

Depois de tentar várias soluções, isso funcionou para mim:

  1. Vá para IIS Manager
  2. Abra o site
  3. Clique em Autenticação
  4. Edite autenticação anônima.
  5. Selecione "Identidade do pool de aplicativos"

exemplo

1
zui