douzhuo1853
2015-01-06 07:02
浏览 104
已采纳

未捕获的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.

图片转代码服务由CSDN问答提供 功能建议

我有JSON PHP输出

  {“data_0”  :{ “_1”:{ “A”:0, “B”:0}, “_2”:{ “C_C”: “CC”, “D_D”: “DD”}}} 
  <  / pre> 
 
 

在jQuery中有代码:

  $ .ajax({
 url:'process.php',
 dateType:'json  ',
类型:'POST',
 data:{val:data_val},
 success:function(data){
 $(data.data_0.data_2).each(function(key,value){\  n alert(键+“”+值); 
}); 
   
 
 

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

如何解决?

非常感谢你。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • douzhuan1467 2015-01-06 07:06
    已采纳

    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.

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • dongpao1918 2015-01-06 07:04

    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);
        });
    
    评论
    解决 无用
    打赏 举报
  • drcrc28428 2015-01-06 07:15

    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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题