web-dev-qa-db-ja.com

エラー:キャッチされていないSyntaxError:予期しないトークン<

何らかの理由で、このエラーメッセージが表示されます。

Uncaught SyntaxError: Unexpected token <

このコード行の場合:

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

このコンテキストでは:

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

私はすべてがうまくいくはずだと思うが、<がどういうわけかこれをスローしている理由を理解していない。

おっと、これがどこで起こっているかを示すのを忘れていました!私の悪い、

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

何か案は?

44
Qcom

これは、javascriptまたはJQueryの問題ではなく、ブラウザーの問題です。山括弧をHTMLタグとして解釈しようとしています。

JavaScriptを設定するときにこれを試してください。

<script>
//<![CDATA[

    // insert teh codez

//]]>
</script>

または、javascriptを別のファイルに移動します。

編集:ああ...私はそれを追跡したそのリンクで。私が言ったことは、問題はまったく問題ではないということでした。 thisは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 });
                }
            }
        });
    });

エラーを見つけることができますか?最初の行にあります:<scriptタグは閉じられていません。 <script type="text/javascript">である必要があります

ただし、以前の提案は引き続き有効です。shouldタグ内のスクリプトをCDATAブロックで囲むか、個別にリンクされたファイルに移動します。

ここでは問題ではありませんでしたが、実際の問題をより迅速に示したはずです。

40
Randolpho

HTML5プッシュ状態と、未知のファイルをindex.htmlにリダイレクトする.htaccessを組み合わせて使用​​するBackboneアプリケーションを開発すると、このエラーも発生しました。

/something/5などのURLにアクセスすると、/index.htmlで私の/something/index.htmlが効果的に提供されていました(私の.htaccessのおかげです)。これは、JavaScriptファイルへのすべての相対URL(index.html内から)を壊すという影響がありました。つまり、私に404を付ける必要がありました。

ただし、私のhtaccessにより、JSファイルを取得しようとすると404 'が実行される代わりに、index.htmlが返されました。したがって、ブラウザには、プルしようとしたすべてのJavaScriptファイルに対してindex.htmlが与えられ、HTMLをJavaScriptであるかのように評価すると、先頭の<(index.htmlの私のタグから)のためにJSエラーを返しました。

私の場合(サブディレクトリ内からサイトにサービスを提供していたとき)の修正は、htmlヘッドにベースタグを追加することでした。

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

12
jeff-h

まったく同じ症状がありましたが、これは私の問題であり、追跡するのが非常に難しいので、誰かの助けになることを願っています。

JQuery parseJSON()を使用しており、解析しようとしたコンテンツは実際にはJSONではなく、返されたエラーページでした。

9
user738048

通常、これは、非HTMLリソース(たとえば、text/javascriptタイプのjqueryライブラリスクリプトファイル)をロードしようとしたときに発生し、サーバーは、予想されるJSリソースを返す代わりに、HTMLを返します-通常404ページ。

その後、ブラウザーはリソースをJSとして解析しようとしますが、実際に返されるのはHTMLページであるため、構文エラーで解析が失敗し、HTMLページは通常<文字で始まるため、これは強調表示されている文字です構文エラーの例外。

7

いくつかのソリューションを試した後、これは私のために働いた:

  1. IIS Managerに移動します
  2. サイトを開く
  3. 認証をクリックします
  4. 匿名認証を編集します。
  5. [アプリケーションプールID]を選択します

1
zui