Ajax错误: Uncaught SyntaxError: Unexpected token '<'
Ajax错误: Uncaught SyntaxError: Unexpected token '<'
我在我的MooTools脚本中运行一个AJAX调用,在Firefox中运行正常,但在Chrome中出现了“Uncaught SyntaxError:Unexpected token:”错误,我无法确定原因。注释掉代码以确定坏代码所在的地方没有任何结果,我认为可能是返回的JSON有问题。检查控制台后,我看到返回的JSON如下:
{"votes": 47,"totalvotes": 90}
我没有发现任何问题,为什么会出现这个错误?
vote.each(function(e){
e.set('send',{
onRequest:function(){
spinner.show();
},
onComplete:function(){
spinner.hide();
},
onSuccess:function(resp){
var j = JSON.decode(resp);
if(!j)返回false;
var restaurant = e.getParent('.restaurant');
restaurant.getElements('.votes')[0].set('html',j.votes +“vote(s)”);
$$('#restaurants .restaurant')。pop()。set('html',“Total Votes:”+ j.totalvotes);
buildRestaurantGraphs();
}
});
e.addEvent('submit',function(e){
e.stop();
this.send();
});
});
问题的原因是服务器返回的响应类型不匹配。解决方法是将服务器响应类型设置为"application/json"。
在这个问题中,一些人遇到了类似的问题,并提出了解决方法。某些情况下,在服务器发送JSON响应时,将响应类型设置为"application/json",这样默认的jQuery处理程序就能正常工作。还有人反馈说他们从第三方API请求JSON时,返回的响应类型是"application/javascript",导致出现了相同的错误,但不知道如何解决。
还有一个人提到,奇怪的是在本地主机上运行正常,但在服务器上运行时出现了问题,并询问是否知道原因。
还有一个人问如何将JSON发送回服务器,因为他遇到了完全相同的问题并且无法解决。
还有一个人感谢了之前的回答,并提到他之前将响应类型误设置为"application/javascript",导致在接收到有效的JSON时出现了错误。将响应类型更改为"application/json"后,问题得到解决。他还指出自己没有使用JSONP。
最后,还有一个人报告说他收到了JSON格式的响应{"success":true,"data":2593},但仍然出现了相同的错误"Uncaught SyntaxError: Unexpected token :"。
出现"Ajax Error : Uncaught SyntaxError: Unexpected token '<'"的原因是服务器返回的响应类型不正确,解决方法是将响应类型设置为"application/json"。
这个问题的出现原因是没有正确使用JSONP的回调函数。解决方法是在返回的JSON代码中包含回调数据,并确保回调函数名称不以数字开头。以下是PHP代码示例,用于在返回JSON时添加回调函数:
$ret['foo'] = "bar"; finish(); function finish() { header("content-type:application/json"); if ($_GET['callback']) { print $_GET['callback']."("; } print json_encode($GLOBALS['ret']); if ($_GET['callback']) { print ")"; } exit; }
这样做可以确保在使用JSONP方法时正确包装JSON数据。同时,如果使用JSON,代码也会正常运行。
希望这对将来遇到同样问题的人有所帮助。对我来说帮助很大。
在Chrome开发者控制台中看到以下错误信息块:
Uncaught SyntaxError: Unexpected token <
这是响应体中包含HTML的一个迹象。实际上,你看到的是浏览器对服务器返回的意外顶行``的反应。
我不知道为什么你提到了“Unexpected token <”,而问题是关于“Unexpected token :”。你的回答与问题完全无关。
那我该如何解决这个问题呢?我有一个在Chrome中引起这个问题的PHP重定向。
补充_magoon的回答,我的情况是我有一个脚本标签,它应该提供JavaScript,但由于请求被重定向到一个以``开头的HTML页面(为什么重定向并不重要),而``不是有效的JavaScript,当浏览器尝试将HTML解析为JS时,它返回SyntaxError。
解决方法是确保HTTP GET返回你要查找的JavaScript文件,而不是意外的HTML。
我正好因为文件路径不正确,找不到脚本标签中指定的文件,导致了这个错误。
对我来说是`301重定向`问题本身。通过在URL末尾添加`/`进行修复。
当我尝试在Heroku上运行一个未完成的项目部署时,有时会遇到这个错误。
.barkhuizen,我觉得你说的完全正确。但现在我该如何让浏览器理解或从服务器发送JavaScript文件呢?
对于任何遇到类似问题的人,我在`.html`之后添加了`/`导致了这个错误。