未捕获的TypeError:无法读取属性JSON

时间:2015-01-06 07:02:35

标签: php jquery json

我在

下面有JSON PHP输出
{"data_0":{"data_1":{"A":0,"B":0},"data_2":{"C_C":"CC","D_D":"DD"}}}

在jQuery中有代码:

$.ajax({
    url : 'process.php',
    dateType: 'json',
    type: 'POST',
    data : {val : data_val},
    success: function(data){
        $(data.data_0.data_2).each(function(key, value) {
        alert(key + " " + value);
        });

但是在运行时我收到错误:Uncaught TypeError:无法读取属性' data_2'未定义的。

如何解决?

非常感谢你。

3 个答案:

答案 0 :(得分:0)

您需要先使用JSON.parse()

解析json
$.ajax({
url : 'process.php',
dataType: 'json',
type: 'POST',
data : {val : data_val},
success: function(data){
    data = JSON.parse(data);
    $(data.data_0.data_2).each(function(key, value) {
    alert(key + " " + value);
    });

答案 1 :(得分:0)

改变这个:

dateType: 'json',

到此;

dataType: 'json',

您的类型应为dataType而不是dateType


此外,您应该使用jQuery的$.each()实用程序方法而不是.each()

$.each(data.data_0.data_2, function(key, value) {
    alert(key + " " + value);
});

$.each() docs:

  

$ .each()函数与$(selector).each()不同,后者用于独占于jQuery对象进行迭代。 $ .each()函数可用于迭代任何集合,无论它是对象还是数组。在数组的情况下,回调每次都传递一个数组索引和相应的数组值。

答案 2 :(得分:0)

请按照Jai建议您的方式进行修复,对于密钥和值,请查看此示例:

var data = JSON.parse('{"data_0":{"data_1":{"A":0,"B":0},"data_2":{"C_C":"CC","D_D":"DD"}}}');
var keys = Object.keys(data.data_0.data_2);

for(var i in keys) {
    alert("Key:"+keys[i]+", value:"+data.data_0.data_2[keys[i]]);
}

<强> DEMO