为什么parseJSON在服务器的以下响应中失败?

时间:2011-09-05 03:13:38

标签: javascript jquery json

在我的萤火虫中,我看到服务器响应:

{"status":"Results Found","errorcode":"0","result":[{"name":"test","id":"1"},{"name":"some","id":"2"}]}


When I do the following I get a "o is null" error.
$.ajax({
 type: "get",
 url: "http://someurl",
 data: $("#eventsearch").serialize(),
 dataType: 'json',
 success: function(msg){
var o = $.parseJSON(msg); //o is NULL error
}

然而,当我对相同的字符串执行parseURL但不作为服务器响应时,一切都很好。这是怎么回事?

var t = '{"status":"Results Found","errorcode":"0","result":[{"name":"test","id":"1"},{"name":"some","id":"2"}]}';

var o = $.parseJSON(t); //everything is good here

4 个答案:

答案 0 :(得分:4)

当您设置dataType:json时,json已经被解析,您不必执行

var o = $.parseJSON(msg);

你可以做到

console.log(msg.result[0].name);

答案 1 :(得分:1)

如果在调用jQuery的ajax函数msg中指定dataType: 'json'已经是一个对象,则通过解析从服务器返回的JSON数据来创建。 jQuery负责解析响应。

答案 2 :(得分:1)

console.log(msg.result[0].id); // gives u 1
console.log(msg.result[1].id); // gives u 2

答案 3 :(得分:0)

该行

var o = $.parseJSON(msg); //o is NULL error

在语法上不能产生该错误。即使parseJSON返回null,将该空值分配给新变量(然后您可以立即忽略)也不是错误。

您没有显示所有相关代码吗?

问题可能是你在ajax操作完成之前尝试使用o - 也就是说,没有等到调用成功回调之后?