错误:未捕获的SyntaxError:意外的令牌<

Qco*_*com 45 jquery token

出于某种原因,我收到此错误消息:

Uncaught SyntaxError: Unexpected token <
Run Code Online (Sandbox Code Playgroud)

对于这行代码:

title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>',
Run Code Online (Sandbox Code Playgroud)

在这方面:

$(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 });
                }
            }
        });
    });
Run Code Online (Sandbox Code Playgroud)

我认为一切都应该很好,但我不明白为什么<会以某种方式抛弃它.

哎呀,忘了展示这是怎么回事!我的错,

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

有任何想法吗?

Ran*_*pho 40

这是一个浏览器问题,而不是javascript或JQuery问题; 它试图将尖括号解释为HTML标记.

设置javascripts时尝试这样做:

<script>
//<![CDATA[

    // insert teh codez

//]]>
</script>
Run Code Online (Sandbox Code Playgroud)

或者,将您的javascript移动到单独的文件中.

编辑:啊......有了这个链接我跟踪了它.我所说的问题根本不是问题.是从网站上剥离的问题:

<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 });
                }
            }
        });
    });
Run Code Online (Sandbox Code Playgroud)

你能发现错误吗?它位于第一行:<script标签未关闭.它应该是 <script type="text/javascript">

但是,我之前的建议仍然存在:您应将带内标记的脚本包含在CDATA块中,或将它们移动到单独链接的文件中.

这不是问题,但它会更快地显示真正的问题.


jef*_*f-h 12

在使用HTML5推送状态和.htaccess开发Backbone应用程序时,我也遇到了这个错误.htaccess将任何未知文件重定向到index.html.

事实证明,当访问诸如此类的URL时/something/5,我/index.html实际上正在服务/something/index.html(感谢我的.htaccess).这会破坏我的JavaScript文件的所有相对URL(来自index.html内部),这意味着他们应该对我有404.

然而,再次由于我的htaccess,而不是404'尝试检索JS文件,而是返回我的index.html.因此,浏览器为其尝试引入的每个JavaScript文件提供了一个index.html,当它将HTML评估为JavaScript时,由于前导<(来自index.html中的我的标记),它返回了一个JS错误.

在我的情况下修复(因为我从一个子目录中提供网站)是在我的html头中添加一个基本标记.

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

  • 这解决了我的问题 - 在我的例子中我使用了 &lt;base href="/"&gt; - 从来没有想过这是一个 htaccess 问题! (2认同)

use*_*048 9

我有完全相同的症状,这是我的问题,追踪非常棘手,所以我希望它可以帮助某人.

我正在使用JQuery parseJSON(),我试图解析的内容实际上不是JSON,而是返回的错误页面.


dav*_*zen 7

通常,当您尝试加载非html资源(例如,jquery库脚本文件作为text/javascript类型)并且服务器而不是返回预期的JS资源时,会发生这种情况,而不是返回HTML - 通常是404页面.

然后浏览器尝试将资源解析为JS,但由于实际返回的是HTML页面,因此解析失败并出现语法错误,并且由于HTML页面通常以<字符开头,因此这是突出显示的字符在语法错误异常中.