web-dev-qa-db-fra.com

Erreur: Uncaught SyntaxError: Jeton inattendu <

Pour une raison quelconque, je reçois ce message d'erreur:

Uncaught SyntaxError: Unexpected token <

Pour cette ligne de code:

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

Dans ce contexte:

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

Je pense que tout devrait aller pour le mieux, mais je ne comprends pas pourquoi le < est en train de jeter cela ..

oups, j'ai oublié de montrer où cela se passe! Ma faute,

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

Des idées?

44
Qcom

Il s'agit d'un problème de navigateur plutôt que de javascript ou de JQuery. il tente d'interpréter le crochet comme une balise HTML.

Essayez ceci lors de la configuration de vos javascripts:

<script>
//<![CDATA[

    // insert teh codez

//]]>
</script>

Sinon, déplacez votre javascript dans un fichier séparé.

Edit: Ahh .. avec ce lien, je l'ai retrouvé. Ce que j'ai dit, c'est que le problème n'était pas du tout le problème. this est le problème, retiré du 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 });
                }
            }
        });
    });

Pouvez-vous repérer l'erreur? C'est à la première ligne: la balise <script N'est pas fermée. Ce devrait être <script type="text/javascript">

Ma suggestion précédente est toujours valable, toutefois: vous devriez inclure des scripts intra-tagués dans un bloc CDATA ou les déplacer dans un fichier lié séparément.

Ce n’était pas le problème ici, mais il aurait montré le vrai problème plus rapidement.

40
Randolpho

J'ai également eu cette erreur lors du développement d'une application Backbone utilisant l'état HTML5 Push en conjonction avec un fichier .htaccess qui redirige tous les fichiers inconnus vers index.html.

Il s'avère que lors de la visite d'une URL telle que /something/5, mon /index.html était effectivement servi à /something/index.html (grâce à mon .htaccess). Cela a eu pour effet de casser toutes les URL relatives de mes fichiers JavaScript (de l'intérieur du fichier index.html), ce qui signifiait qu'ils devraient avoir 404'd sur moi.

Cependant, encore une fois en raison de mon htaccess, au lieu de 404 lors de la tentative de récupération des fichiers JS, ils ont renvoyé mon index.html. Ainsi, le navigateur a reçu un index.html pour chaque fichier JavaScript qu’il a essayé d’extraire et, lorsqu’il a évalué le code HTML comme s’il s’agissait de JavaScript, il a renvoyé une erreur JS en raison du <(de ma balise dans index.html). .

La solution dans mon cas (car je servais le site depuis un sous-répertoire) était d’ajouter une balise de base dans ma tête html.

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

12
jeff-h

J'avais exactement le même symptôme, et c'était mon problème, très difficile à retracer, alors j'espère que cela aidera quelqu'un.

J'utilisais JQuery parseJSON() et le contenu que je tentais d'analyser n'était en réalité pas du JSON, mais une page d'erreur renvoyée.

9
user738048

Cela se produit généralement lorsque vous essayez de charger une ressource non html (par exemple, le fichier de script de la bibliothèque jquery sous la forme text/javascript) et que le serveur, au lieu de renvoyer la ressource JS attendue, renvoie HTML à la place, généralement une page 404.

Le navigateur tente alors d'analyser la ressource en tant que JS, mais comme une page HTML a été renvoyée, l'analyse échoue avec une erreur de syntaxe et, comme une page HTML commence généralement par un caractère <, il s'agit du caractère en surbrillance. dans l'exception d'erreur de syntaxe.

7
david.barkhuizen

Après avoir essayé plusieurs solutions, cela a fonctionné pour moi:

  1. Allez à IIS Manager
  2. Ouvrez le site
  3. Cliquez sur Authentification
  4. Modifier l'authentification anonyme.
  5. Sélectionnez "Identité du pool d'applications"

exemple

1
zui