douzhuo1853
douzhuo1853
2015-01-06 07:02

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

已采纳

I have JSON PHP Output below

{"data_0":{"data_1":{"A":0,"B":0},"data_2":{"C_C":"CC","D_D":"DD"}}}

In jQuery have code :

$.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);
        });

But when run I received error : Uncaught TypeError: Cannot read property 'data_2' of undefined.

How to fix it ?

Thanks you so much.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • douzhuan1467 douzhuan1467 6年前

    change this:

    dateType: 'json',
    

    to this;

    dataType: 'json',
    

    You have a type it should be dataType not dateType.


    Also you should use $.each() utility method of jQuery instead of .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.

    点赞 评论 复制链接分享
  • drcrc28428 drcrc28428 6年前

    Please fix like Jai has suggested you, and For key and value take a look on this example:

    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

    点赞 评论 复制链接分享
  • dongpao1918 dongpao1918 6年前

    You need to parse json first using JSON.parse()

    $.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);
        });
    
    点赞 评论 复制链接分享