Uncaught TypeError: Cannot read property JSON

Uncaught TypeError: Cannot read property 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);
        });

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

如何解决?

非常感谢。

您需要先使用 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);
    });

改变这个:

dateType: 'json',

到此;

dataType: 'json',

您的类型应该是 dataType 而不是 dateType


您还应该使用 jQuery 的 $.each() 实用方法而不是 .each():

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

$.each() docs:

The $.each() function is not the same as $(selector).each(), which is used to iterate, exclusively, over a jQuery object. The $.each() function can be used to iterate over any collection, whether it is an object or an array. In the case of an array, the callback is passed an array index and a corresponding array value each time.

请按照 的建议进行修复,对于键和值,请查看此示例:

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