未捕获的SyntaxError:

我在我的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) return 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();
});
});
1311372 次浏览

我刚刚解决了这个问题。有一些东西导致了标准请求调用的问题,所以这是我使用的代码:

vote.each(function(element){
element.addEvent('submit', function(e){
e.stop();
new Request.JSON({
url : e.target.action,
onRequest : function(){
spinner.show();
},
onComplete : function(){
spinner.hide();
},
onSuccess : function(resp){
var j = resp;
if (!j) return false;
var restaurant = element.getParent('.restaurant');
restaurant.getElements('.votes')[0].set('html', j.votes + " vote(s)");
$$('#restaurants .restaurant').pop().set('html', "Total Votes: " + j.totalvotes);
buildRestaurantGraphs();
}
}).send(this);
});
});

如果有人知道为什么标准请求对象给我的问题,我很想知道。

只是供那些可能有同样问题的人参考——我只需要让我的服务器以application/ JSON的形式发送回JSON,默认的jQuery处理程序就可以正常工作。

这种情况刚刚发生在我身上,而原因并不是上述原因中的任何一个。我使用jQuery命令getJSON和添加callback=?来使用JSONP(因为我需要跨域),并返回JSON代码{"foo":"bar"}并得到错误。

这是因为我应该包含回调数据,比如jQuery17209314005577471107_1335958194322({"foo":"bar"})

下面是我用来实现这一点的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;
}

希望这能在将来帮助到别人。

当我使用jQuery.getJSON()试图反序列化Infinity的浮点值时,我得到了一个“SyntaxError: Unexpected token I”,编码为INF,这在JSON中是非法的。

未捕获的SyntaxError:意外的令牌}

Chrome给了我这个示例代码的错误:

<div class="file-square" onclick="window.location = " ?dir=zzz">
<div class="square-icon"></div>
<div class="square-text">zzz</div>
</div>

并解决了它,固定的onclick就像

... onclick="window.location = '?dir=zzz'" ...

但是这个错误和这个问题无关。

我有同样的问题,原来是Json从服务器返回 不是有效的Json-P。如果不使用跨域调用,则使用常规Json.

我想我应该把我的问题和决心加到清单上。

我得到:Uncaught SyntaxError: Unexpected token <和错误是指向这一行在我的ajax成功声明:

var total = $.parseJSON(response);

我后来发现,除了json结果之外,还有HTML与响应一起发送,因为我的PHP中有一个错误。当PHP中出现错误时,你可以设置它用巨大的橙色表格来警告你这些表格会抛出JSON。

我通过做console.log(response)来发现,以查看实际发送的是什么。如果这是JSON数据的问题,只需尝试查看是否可以执行console.log或其他一些语句,以便查看发送了什么和接收了什么。

看到红色错误

Uncaught SyntaxError:意外的令牌<

在Chrome开发人员的控制台选项卡中是响应体中的HTML指示。

你实际看到的是浏览器对来自服务器的意外顶部行<!DOCTYPE html>的反应。

"Uncaught SyntaxError:意外令牌"错误出现时,你的数据返回错误的json格式,在某些情况下,你不知道你得到了错误的json格式 请用alert()检查;函数< / p >

onSuccess : function(resp){
alert(resp);
}

你收到的信息应该是:{"firstName":"John", "lastName":"Doe"}
然后你可以使用

下面的代码
onSuccess : function(resp){
var j = JSON.decode(resp); // but in my case i'm using: JSON.parse(resp);
}

with out error "Uncaught SyntaxError:意外令牌"
但如果你弄错了json格式
例:< / p >

...{“firstName”:“约翰”,“姓”:“母鹿”}

Undefined variable: errCapt in .... on line<b>65</b><br/>{"firstName":"John", "lastName":"Doe"}

所以你得到了错误的json格式,请在json .decode或json .parse之前修复它

听起来好像你的回答被评估了。这将在Chrome中给出相同的错误:

var resp = '{"votes":47,"totalvotes":90}';
eval(resp);

这是由于大括号的{…}被javascript解释为代码块,而不是人们可能期望的对象文字。

我会查看JSON.decode()函数,看看是否有一个eval在那里。

类似的问题: Eval() =意外令牌:错误 < / p >

在我的情况下,我遇到了同样的错误,而运行spring mvc应用程序由于错误的映射在我的mvc控制器

@RequestMapping(name="/private/updatestatus")

我把上面的映射改为

 @RequestMapping("/private/updatestatus")

 @RequestMapping(value="/private/updatestatus",method = RequestMethod.GET)

当你请求JSON文件时,服务器返回JavaScript Content-Type头(text/javascript)而不是JSON (application/json)。

根据MooTools文档:

带有javascript内容类型的响应将被自动评估。

结果MooTools试图评估你的JSON作为JavaScript,当你试图评估这样的JSON:

{"votes":47,"totalvotes":90}

作为JavaScript,解析器将{}作为块作用域而不是对象表示法。它与求值以下“code”相同:

"votes":47,"totalvotes":90

如你所见,:在这里完全出乎意料。

解决方案是为JSON文件设置正确的Content-Type头。如果你用.json扩展名保存它,你的服务器应该自己做。

今天我也遇到了这种情况。我使用EF和返回一个实体响应AJAX调用。实体上的虚拟属性导致服务器上未检测到的周期性依赖项错误。通过在虚拟属性上添加[ScriptIgnore]属性,这个问题得到了解决。

与其使用ScriptIgnore属性,不如直接返回DTO。

对我来说,当我在Chrome浏览器中查看页面的源代码时,灯泡就亮了。我在if语句中多了一个括号。您将立即在失败的行上看到一个带叉的红圈。这是一个相当没有帮助的错误消息,因为“未捕获语法错误:意外令牌”第一次出现在Chrome控制台时没有引用行号。

我做错了

   `var  fs = require('fs');
var fs.writeFileSync(file, configJSON);`

我已经初始化了fs变量。但是我还是把var放在了第二行。这个也给出了那种错误。

发生这种情况是因为我在我的快速服务器中有一个规则设置,将任何404路由回/#加上任何原始请求。允许angular router/js处理请求。如果没有js路由来处理该路径,则向服务器发出对/#/whatever的请求,这只是对/的请求,即整个网页。

因此,例如,如果我想对/correct/somejsfile.js发出请求,但我没有将其输入到/wrong/somejsfile.js,则向服务器发出请求。该位置/文件不存在,因此服务器返回302 location: /#/wrong/somejsfile.js。浏览器愉快地跟随重定向,并返回整个网页。浏览器将页面解析为js,您将得到

Uncaught SyntaxError:意外的令牌<

因此,为了帮助找到有问题的路径/请求,请查找302个请求。

希望这能帮助到别人。

对于那些在AngularJs 1.4.6或类似版本中遇到过这种情况的人来说,我的问题是angular找不到我的模板,因为我提供的templateUrl(路径)处的文件找不到。我只需要提供一个可到达的路径,问题就解决了。

如果没有任何意义,这个错误也可能是由嵌入在html/javascript中的PHP错误引起的,比如下面这个

<br />
<b>Deprecated</b>:  mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in <b>C:\Projects\rwp\demo\en\super\ge.php</b> on line <b>54</b><br />
var zNodes =[{ id:1, pId:0, name:"ACE", url: "/ace1.php", target:"_self", open:true}

不是由PHP插入html的代码中的<br />等导致错误。要修复这类错误(抑制警告),请在开始时使用此代码

error_reporting(E_ERROR | E_PARSE);

要查看,右键单击页面,“查看源代码”,然后检查完整的html以发现此错误。

在我的情况下,这是一个错误的url(不存在),所以也许你的“发送”在第二行应该是其他…

我的错误是忘记单引号/双引号周围的url在javascript:

所以错误的代码是:

window.location = https://google.com;

正确的代码:

window.location = "https://google.com";

此错误也可能意味着在代码中缺少colon:

在我的例子中,将/放在脚本的src或样式表的href的开头就解决了这个问题。

反复面对JS问题,我正在我的xblock包上应用Ckeditor。如果有人帮助我,请告诉我。使用OpenEdx, Javascript, xblock

xblock.js:158 SyntaxError: Unexpected token '=>'
at eval (<anonymous>)
at Function.globalEval (jquery.js:343)
at domManip (jquery.js:5291)
at jQuery.fn.init.append (jquery.js:5431)
at child.loadResource (xblock.js:236)
at applyResource (xblock.js:199)
at Object.<anonymous> (xblock.js:202)
at fire (jquery.js:3187)
at Object.add [as done] (jquery.js:3246)
at applyResource (xblock.js:201) "SyntaxError: Unexpected token '=>'\n    at eval (<anonymous>)\n    at Function.globalEval (http://localhost:18010/static/studio/common/js/vendor/jquery.js:343:5)\n    at domManip (http://localhost:18010/static/studio/common/js/vendor/jquery.js:5291:15)\n    at jQuery.fn.init.append (http://localhost:18010/static/studio/common/js/vendor/jquery.js:5431:10)\n    at child.loadResource (http://localhost:18010/static/studio/bundles/commons.js:5091:27)\n    at applyResource (http://localhost:18010/static/studio/bundles/commons.js:5054:36)\n    at Object.<anonymous> (http://localhost:18010/static/studio/bundles/commons.js:5057:25)\n    at fire (http://localhost:18010/static/studio/common/js/vendor/jquery.js:3187:31)\n    at Object.add [as done] (http://localhost:18010/static/studio/common/js/vendor/jquery.js:3246:7)\n    at applyResource (http://localhost:18010/static/studio/bundles/commons.js:5056:29)"

虽然迟到了,但我的解决方案是将dataType指定为json。或者确保您没有设置jsonp: true。

我得到这个错误,因为我在脚本标签中缺少类型属性。

最初我使用,但当我在脚本标记内添加类型属性时,我的问题就解决了

试着忽略这个问题:

Cypress.on('uncaught:exception', (err, runnable) => {
return false;
});