我使用JSON.parse()
来解析从使用jquery' s json
调用的api(Laravel 5)返回的$.get()
。 json
似乎有效,但JSON.parse()
在Safari和Chrome中都会返回错误。
Chrome说:
Uncaught SyntaxError: Unexpected token o
Safari说:
SyntaxError: JSON Parse error: Unexpected identifier "object"
代码片段如下:
$.get('/foo/' + product_id, function(data){
console.log(data);
var product = JSON.parse(data);
if (product) {
// do something
}
});
JSON是:
{
"id":"1b7b3eb7-8769-48fe-a421-64c105de3eff",
"parent":null,
"org_id":"845d0d53-de68-42c3-9007-c3d0e72c555e",
"category_id":"e58237f7-e040-4098-8d46-b84f8cdf7d83",
"purchase_tax":null,
"sale_tax":null,
"code":"982",
"name":"Mr. Destin Hoppe",
"is_purchased":false,
"is_sold":false,
"purchase_price":null,
"selling_price":null,
"purchase_includes_tax":false,
"sale_includes_tax":false,
"created_at":"2015-09-16 17:39:34",
"updated_at":"2015-09-16 17:39:34"
}
有趣的是,eval()
工作正常。
答案 0 :(得分:7)
错误是data
是对象的结果,而不是JSON。你不需要解析任何东西;它已经是一个JavaScript对象。 jQuery在其get
方法中进行解析。要确认这一点,请将此行添加到回调的顶部。
console.log(data["id"]);
作为此错误的另一个示例,由于同样的原因,以下行也将失败。
JSON.parse({});