JSON对象由jQuery识别为String

时间:2011-06-10 12:53:18

标签: jquery json parsing

我正在尝试使用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应该解析它。然后将数据识别为对象。

那么......出了什么问题?

4 个答案:

答案 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将其视为字符串,我无法正确解析它。

我知道这个问题已经过时了,但我希望答案可以帮助别人,因为这个问题对我来说也是一个真正令人头疼的问题。