出于某种原因,我收到此错误消息:
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
有什么想法吗?
答案 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)
尝试了几种解决方案后,这对我有用:
答案 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如何找到它们。但它们没有正确加载。
将所有文件链接到服务器根目录后,问题解决了。