未捕获的syntaxerror意外令牌U JSON

kin*_*_ru 281 json

当我在chrome中运行我的页面时,我收到此错误"未捕获的syntaxerror意外令牌U".在Firefox中,我得到了"JSON.parse:意外的角色".我从php文件返回json数据,返回的json字符串有效.我用http://jsonlint.com/检查了它.任何帮助将不胜感激...谢谢.

这是返回的JSON字符串

[
    ["1","Pan Africa Market","\"1521 1st Ave, Seattle, WA\"","47.608941","-122.340145","restaurant"],
    ["2","The Melting Pot","14 Mercer St, Seattle, WA","47.624562","-122.356442","restaurant"],
    ["3","Ipanema Grill","1225 1st Ave, Seattle, WA","47.606366","-122.337656","restaurant"],
    ["4","Sake House","230 1st Ave, Seattle, WA","47.612825","-122.34567","bar"],
    ["5","Crab Pot","1301 Alaskan Way, Seattle, WA","47.605961","-122.34036","restaurant"],
    ["6","Mexican Kitchen","2234 2nd Ave, Seattle,WA","47.613975","-122.345467","bar"],
    ["7","Wingdome","1416 E Olive Way, Seattle, WA","47.617215","-122.326584","bar"],
    ["8","Piroshky Piroshky","1908 Pike pl, Seattle, WA","47.610127","-122.342838","restaurant"]
]
Run Code Online (Sandbox Code Playgroud)

Sea*_*sey 625

JSON.parse实际给出的值时,通常会看到该错误undefined.所以,我会检查试图解析它的代码 - 很可能你没有解析这里显示的实际字符串.

  • 它也可能是"未定义"`作为字符串而不是文字`undefined`.我花了30分钟才发现了这一点. (26认同)
  • @ ns47731这实际上是一样的.实际未定义变为`u`的原因是`undefined`被强制转换为字符串(因为字符串是JSON.parse所期望的). (11认同)
  • 呃,发送异步请求并立即尝试解析未定义的返回.厌恶自己,谢谢. (10认同)
  • 这个错误也会通过UTF-8 {"在json字符串的开头抛出 (7认同)
  • @ kinath-ru请将此标记为完整. (2认同)
  • @kinath_ru如上.请将此标记为正确. (2认同)

use*_*699 14

我在验证时收到此消息(在MVC项目中).对我来说,添加ValidationMessageFor元素修复了这个问题.

确切地说,jquery.validate.unobtrusive.js中的第43行导致了这个问题:

  replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;
Run Code Online (Sandbox Code Playgroud)


Kar*_*iga 11

JSON.parse 的参数可能什么都不返回(即 JSON.parse 的值是undefined)!

当我从 xyz.sol 文件解析 Compiled solidity 代码时,它发生在我身上。

import web3 from './web3';
import xyz from './build/xyz.json';

const i = new web3.eth.Contract(
  JSON.parse(xyz.interface),
  '0x99Fd6eFd4257645a34093E657f69150FEFf7CdF5'
);

export default i;
Run Code Online (Sandbox Code Playgroud)

被拼错为

JSON.parse(xyz.intereface)
Run Code Online (Sandbox Code Playgroud)

什么都没有返回!


Mat*_*ius 5

发生此错误的最常见情况是使用模板,该模板先生成控件,然后更改方式id和/或name通过“覆盖”默认模板来生成,例如

@Html.TextBoxFor(m => m, new {Name = ViewData["Name"], id = ViewData["UniqueId"]} )
Run Code Online (Sandbox Code Playgroud)

然后忘记更改ValidationMessageFor

@Html.ValidationMessageFor(m => m, null, new { data_valmsg_for = ViewData["Name"] })    
Run Code Online (Sandbox Code Playgroud)

希望这可以节省您一些时间。