语法错误:来自angularjs的chrome控制台中出现意外标记N

vuktfyat  于 2023-02-03  发布在  Angular
关注(0)|答案(4)|浏览(158)

嗨,我得到这个错误使用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"}]

有人知道这是什么意思吗?

drnojrws

drnojrws1#

任何SyntaxError: Unexpected token都意味着你得到了一些格式错误的JSON,通常是一个没有用引号括起来的字符串,只有以下是JSON中的supported data-types

  • 字符串(括在引号中的任何文本)
  • array(“数组文本”,[]
  • object(一个“对象文本”,{}
  • 布尔值(truefalse,未括在引号中)
  • 整数或数字(不括在引号中)
  • null(未括在引号中)

具体来说,SyntaxError: Unexpected token N通常是在JSON中意外返回NaN的结果,尽管它可能只是其他一些未 Package 的字符串。NaN不是JSON中支持的值,除了truefalsenull之外,其他任何未 Package 在引号中的文本也不受支持因此,尽管JSON示例中确实有两个null,但这不应该是问题所在(错误中的“N”不是小写,而在null中是小写)。
错误中出现大写字母'N'让我怀疑您在JSON输出中意外返回了NaN,尽管它在示例中并不存在。示例中仅有的其他大写字母N被安全地用引号括起来,并且无论如何都位于字符串的中间。
关键是要确保正确地清理服务器上的输出,用零替换任何NaN值,或者用引号括起来,等等。或者,您可以尝试在客户机上处理此类错误,但在起源点要容易得多,因此您可以在生成内容的地方使用条件逻辑。而不需要使用“肮脏的JSON解析器”(这有点像在睡觉前开灯清理地板,这样就知道所有东西的位置,而不需要在黑暗中检测和避开未知的障碍物)。

goucqfw6

goucqfw62#

在我的例子中,json字符串keys(name, age, motto.)是而不是,在使用JSON.parse()方法时用双引号修饰。

非正式

{
    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."
}
1mrurvl1

1mrurvl13#

也可能是因为

Notice: Undefined index: project_id in /var/www/html/

由PHP生成。

wpcxdonn

wpcxdonn4#

我遇到了同样的问题,用另一个字母代替了N。经过几次测试,我意识到这个字母实际上是我发送的字符串(我认为它被转换成了JSON)的第一个字母!(在我的例子中,H代表“Hello World”)。
问题是我发送的JSON无效。(JSON只是一个字符串,它具有一个与之关联的规范,该规范使它能够跨不同的接口被识别)实际上,我只是发送了一个没有序列化的String(以正确的格式)使用JSON规范。我认为您也是这样。所以,这个错误来自你的后端。修复取决于你使用的后端。如果是java我可以帮你!
您可以尝试发送有效的JSON,将您发送的数据替换为{“id”:1,“name”:“test”},这是一个有效的JSON。在这种情况下,您的错误应该会消失,这证明您的JSON序列化不正确。

相关问题