我正在尝试使用jQuery解析来自AJAX请求的一些JSON。
基本上,JSON由PHP编码,如下所示:
{"1":{"key1":"value1","key2":"value2"},"0":{"key1":"value1","key2":"value2"}}
$ .ajax的回调函数如下:
$.each(data, function(item) {
console.log($.type(item));
myfunction(item.key1);
});
项目被识别为字符串,而item.key1未定义。
响应的内容类型是“application / json”,因此jQuery应该解析它。然后将数据识别为对象。
那么......出了什么问题?
答案 0 :(得分:0)
尝试将类型设置为json:
$.ajax({
dataType: 'json'
});
答案 1 :(得分:0)
item
a String
。
$.each()
回调的第一个参数是关键。在您的示例中,您的JSON对象是带有数字索引的Object
,但字符串除外。您正尝试从属性名称访问该属性。相反,您希望在示例中使用data[item]
。
您想要访问属性值,如此...
$.each(data, function(propertyName, propertyValue) {
console.log(propertyName, propertyValue);
});
变量名称已更改为更清晰。
在真实Array
中,参数将是后跟值的索引。
答案 2 :(得分:0)
如果它是有效的JSON,它应该没问题。
根据返回的对象的外观,您可能必须使用:
item.1.key1
//Or
item['1'].key1
而不是:
item.key1
试一试,看看你得到了什么。
答案 3 :(得分:0)
使用Firebug查看来自服务器的响应时,您是否看到了呼叫的JSON“tab”?如果没有,则必须将die();
添加到PHP脚本的末尾,为jQuery生成JSON以识别它。没有die()
,jQuery将其视为字符串,我无法正确解析它。
我知道这个问题已经过时了,但我希望答案可以帮助别人,因为这个问题对我来说也是一个真正令人头疼的问题。