嗨,我得到这个错误使用angularjs通过chrome控制台:
SyntaxError: Unexpected token N
at Object.parse (native)
at fromJson (http://localhost:3000/assets/angular.js?body=1:803:14)
at $HttpProvider.defaults.defaults.transformResponse
http://localhost:3000/assets/angular.js?body=1:9471:18)
at http://localhost:3000/assets/angular.js?body=1:9446:12
at Array.forEach (native)
at forEach (http://localhost:3000/assets/angular.js?body=1:149:11)
at transformData (http://localhost:3000/assets/angular.js?body=1:9445:3)
at transformResponse (http://localhost:3000/assets/angular.js?body=1:10061:17)
at wrappedCallback (http://localhost:3000/assets/angular.js?body=1:7510:59)
at http://localhost:3000/assets/angular.js?body=1:7583:26 angular.js?body=1:6350
(anonymous function) angular.js?body=1:6350
(anonymous function) angular.js?body=1:5421
wrappedCallback angular.js?body=1:7512
(anonymous function) angular.js?body=1:7583
Scope.$eval angular.js?body=1:8927
Scope.$digest angular.js?body=1:8790
Scope.$apply angular.js?body=1:9013
done angular.js?body=1:10266
completeRequest angular.js?body=1:10450
xhr.onreadystatechange
我正在通过angular执行get()请求,其中json为:
[{"_id":"51f96144c885552bda000015","company_id":"51f82116c88555bf48000004","description":"ENGINEER FOR BEST COMPANY",
"industry_id":null,"location_city":"Pittsburgh","location_coordinates":[-79.9556424,40.4379259],"location_state":"PA","location_zip":"15213","name":"Engineer "},
{"_id":"51f972a5c885552bda000026","company_id":"51f82116c88555bf48000004","description":"has to do everything","industry_id":null,"location_city":"Pittsburgh","location_coordinates":[-79.9418166,40.4443735],"location_state":"PA","location_zip":"15289","name":"job #2"}]
有人知道这是什么意思吗?
4条答案
按热度按时间drnojrws1#
任何
SyntaxError: Unexpected token
都意味着你得到了一些格式错误的JSON,通常是一个没有用引号括起来的字符串,只有以下是JSON中的supported data-types:[]
){}
)true
或false
,未括在引号中)具体来说,
SyntaxError: Unexpected token N
通常是在JSON中意外返回NaN
的结果,尽管它可能只是其他一些未 Package 的字符串。NaN
不是JSON中支持的值,除了true
、false
和null
之外,其他任何未 Package 在引号中的文本也不受支持因此,尽管JSON示例中确实有两个null
,但这不应该是问题所在(错误中的“N”不是小写,而在null
中是小写)。错误中出现大写字母'N'让我怀疑您在JSON输出中意外返回了
NaN
,尽管它在示例中并不存在。示例中仅有的其他大写字母N被安全地用引号括起来,并且无论如何都位于字符串的中间。关键是要确保正确地清理服务器上的输出,用零替换任何
NaN
值,或者用引号括起来,等等。或者,您可以尝试在客户机上处理此类错误,但在起源点要容易得多,因此您可以在生成内容的地方使用条件逻辑。而不需要使用“肮脏的JSON解析器”(这有点像在睡觉前开灯清理地板,这样就知道所有东西的位置,而不需要在黑暗中检测和避开未知的障碍物)。goucqfw62#
在我的例子中,json字符串keys(
name, age, motto.
)是而不是,在使用JSON.parse()
方法时用双引号修饰。非正式:
将产生如下错误:
SyntaxError: Unexpected token n at Object.parse (native)
正式:
1mrurvl13#
也可能是因为
由PHP生成。
wpcxdonn4#
我遇到了同样的问题,用另一个字母代替了N。经过几次测试,我意识到这个字母实际上是我发送的字符串(我认为它被转换成了JSON)的第一个字母!(在我的例子中,H代表“Hello World”)。
问题是我发送的JSON无效。(JSON只是一个字符串,它具有一个与之关联的规范,该规范使它能够跨不同的接口被识别)实际上,我只是发送了一个没有序列化的String(以正确的格式)使用JSON规范。我认为您也是这样。所以,这个错误来自你的后端。修复取决于你使用的后端。如果是java我可以帮你!
您可以尝试发送有效的JSON,将您发送的数据替换为{“id”:1,“name”:“test”},这是一个有效的JSON。在这种情况下,您的错误应该会消失,这证明您的JSON序列化不正确。