SyntaxError:angularjs的chrome控制台中出现意外的令牌N
SyntaxError: Unexpected token N in chrome console from angularjs
嗨,我通过chrome控制台使用angularjs得到了这个错误:
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"}]
有人知道这意味着什么吗?
任何SyntaxError: Unexpected token
都意味着你有一些格式错误的JSON,它通常是一个没有引号的字符串。JSON中仅支持以下数据类型:
- 字符串(任何用引号括起来的文本)
- array("array literal",在
[]
中) - 对象("对象文字",在
{}
中) - 布尔值(
true
或false
,不包含在引号中) - 整数或数字(不带引号)
- null(未用引号括起来)
具体来说,SyntaxError: Unexpected token N
通常是意外地在JSON中返回NaN
的结果,尽管它可能只是其他一些未包装的字符串。除了true
、false
和null
(以及数字)之外,JSON中不支持NaN
,也不支持任何其他未用引号括起来的文本。因此,尽管您的JSON样本中确实有两个null
,但这应该不是问题所在。(错误中的'N'不是小写的,就像在null
中一样。)
错误中大写字母"N"的存在使我怀疑您在JSON输出中的某个地方意外返回了NaN
,尽管它不在您的示例中。样本中唯一的其他大写-N被安全地包装在引号中,并且在任何情况下都位于字符串的中间。
关键是要确保您正确地清理服务器上的输出,并用零代替任何NaN
值,或用引号括起来,等等。或者,您可以尝试在客户端上处理此类错误,但在源位置要容易得多,因此您可以在生成内容时使用条件逻辑,而不需要使用"脏JSON解析器"。(这有点像睡前在灯还亮的时候清理地板,你知道一切都在哪里,而不是需要在黑暗中检测和避开未知的障碍物。)
在我的例子中,json字符串,键(name, age, motto.
)是而不是在使用CCD_ 17方法时用双引号装饰。
非正式:
{
name: "Jhon Brown",
age: 30,
motto: "Please, choose good."
}
会产生错误,如:SyntaxError: Unexpected token n at Object.parse (native)
正式:
{
"name": "Jhon Brwon",
"age": 30,
"motto": "Please, choose good."
}
这也可能是的结果
Notice: Undefined index: project_id in /var/www/html/
由php生成。
我遇到了同样的问题,用了另一个字母而不是N。经过几次测试,我意识到这封信实际上是我发送的字符串的第一个字母(我以为它被转换成了JSON)!(在我的例子中,H代表"Hello World")。
问题是我发送的JSON无效。(JSON只是一个字符串,它有一个相关的规范,使它能够在不同的接口中被识别)事实上,我只是发送了一个没有用JSON规范序列化(以正确的格式)的字符串。我想你也是这样。所以,这个错误来自你的后端。修复取决于你使用的是哪个后端。如果是java,我可以帮你!
您可以尝试发送有效的JSON来替换您发送的数据{"id":1,"name":"test"},这是一个有效的JSON。在这种情况下,您的错误应该会消失,这证明您的JSON序列化是不对的。
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- jQuery$.getJSON抛出意外令牌
- 为什么我在下面的..of循环中得到意外令牌
- 组件中的ReactJS意外令牌
- AngularJS $http GET 请求到本地 JSON 文件返回语法错误:意外令牌]
- 巴别塔,意外令牌 (15:33) ::.
- Sencha 2.0 和 Codeigniter RESTful API 生成未捕获的语法错误:意外令牌:
- 在事件上使用 jquery 时出现意外令牌
- JSON 中位置 4 处的意外令牌<
- 意外令牌 ) 在我的代码中
- Electron 和 Babel 6 异步/等待抛出意外令牌
- “JSON.parse(str)”返回“意外令牌c”,但str是一个字符串
- jQuery after() uncatch SyntaxError: 意外令牌 ILLEGAL
- 使用节点javascript的意外令牌ILLEGAL
- Javascript/JQuery-Chrome意外令牌
- Ajax 帖子未捕获语法错误:意外令牌非法
- angularjs-SyntaxError:请求从服务器返回时出现意外令牌
- jquery:使用ember的意外令牌C
- React本机项目中的意外令牌
- 解析有效的 JSON 得到“语法错误:意外令牌非法”