在我的萤火虫中,我看到服务器响应:
{"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
答案 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
- 也就是说,没有等到调用成功回调之后?