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

时间:2010-09-02 18:23:58

标签: jquery token

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

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

有什么想法吗?

10 个答案:

答案 0 :(得分:40)

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

在设置javascripts时尝试这样做:

<script>
//<![CDATA[

    // insert teh codez

//]]>
</script>

或者,将您的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 });
                }
            }
        });
    });

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

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

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

答案 1 :(得分:11)

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

事实证明,在访问/something/5等网址时,我的/index.html实际上已在/something/index.html投放了(感谢我的.htaccess)。这会破坏我的JavaScript文件的所有相对URL(来自index.html内部),这意味着他们应该在我身上留下404。

然而,再次由于我的htaccess,而不是404尝试检索JS文件,而是返回我的index.html。因此,浏览器为它试图引入的每个JavaScript文件提供了一个index.html,当它评估HTML时,就好像它是JavaScript一样,由于领先的&lt;它返回了一个JS错误。 (来自我在index.html中的标签)。

我的案例中的修复(因为我从子目录中提供网站)是在我的html头中添加基本标记。

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

答案 2 :(得分:9)

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

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

答案 3 :(得分:7)

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

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

答案 4 :(得分:1)

尝试了几种解决方案后,这对我有用:

  1. 转到IIS管理器
  2. 打开网站
  3. 点击身份验证
  4. 编辑匿名身份验证。
  5. 选择“应用程序池标识”
  6. example

答案 5 :(得分:0)

在将Web应用程序与Firebase一起使用时出现此错误。这是由于未在index.html

中包含所需的库

要在开发环境中解决此问题,我在index.html中添加了以下代码行

<script src="https://www.gstatic.com/firebasejs/8.1.1/firebase.js"></script>

在计划进行生产部署时,请使用必要的库,而不是导入所有js sdk。

答案 6 :(得分:-1)

当您更改文件所在的目录名称时,它通常有效。 当我将它从“js /”移动到“../ js”

时,它对我有用

答案 7 :(得分:-1)

如果您仅在Chrome和IE中遇到此问题,一切正常,只需在开发工具中启用“停用缓存”复选按钮(F12 - &gt;“网络”标签)并且在过去一小时内清楚了解历史。

我遇到了这个问题,上面的解决方案对我有用。

答案 8 :(得分:-1)

尝试将text / javascript替换为text / html然后保存注释并重新加载浏览器然后将其恢复为text / javascript ..我不知道但是由于未知原因这个与我合作..我正在搜索和复制粘贴,我只是不小心撤消我正在键入的东西然后繁荣kablooey它工作0.O顺便说一下我只是菜鸟..对不起我只是觉得它可以帮助虽然..

答案 9 :(得分:-3)

我不知道你是否得到了答案。我今天遇到了这个问题,我想我得到了一个正确答案:你没有把脚本文件放在正确的位置。

大多数人都不会遇到此问题,因为他们直接将脚本放入其服务器目录中。我遇到这个是因为我将源文件(html文件)链接到服务器根目录。我没有链接脚本文件,我不知道nginx如何找到它们。但它们没有正确加载。

将所有文件链接到服务器根目录后,问题解决了。