如何解决无法读取javascript中未定义的属性0

时间:2017-11-29 22:22:56

标签: javascript json ajax

我已经尝试过Stack Overflow上的许多解决方案,但它们都没有在我的情况下工作。我在这个ajax调用中只是坚持这个小解析的东西。 我的json看起来像这样:

{
  "DailyCohorts":[
    {
      "transDate":"2017-10-01",
      "newUsers":"9",
      "CustomerAddedDate":"2017-10-01",
      "UserCount":"5"
    }, 
    //...
  ]
}

这是我的for循环,我试图取出值

 function dailyCohort(){

  $.ajax({
  type: "GET",
  url: "http://com/sp/cohort.php",

   success: function(data){    

      console.log("json",data);
      console.log("data length",data.length);

    for(i=0; i< data.DailyCohorts.length; i++)
    {
       console.log(data.DailyCohorts[i].transDate);
    }

    }, 
     beforeSend: function() {
        $("#w-cohort-loader").show()
    },
    complete: function() {
        $("#w-cohort-loader").hide();
    },

    error: function(data)
    {
        console.log(data);
    } 
    }); 
} 

请提前帮助我,

1 个答案:

答案 0 :(得分:2)

您应该访问JSON对象的DailyCohorts属性。 DailyCohorts是您应该循环并获取每个项目的数组。

success: function(data){ 
   for(i=0; i< data.DailyCohorts.length; i++)
   {
       console.log(data.DailyCohorts[i].transDate);
   }
}

或者如果您使用$.each循环遍历DailyCohorts数组

$.each(data.DailyCohorts,function(index,item){
    console.log(item.transDate);
});

在尝试访问它之前,最好先检查这个属性是否存在。

if(data.DailyCohorts)
{
    for(i=0; i< data.DailyCohorts.length; i++)
    {
        console.log(data.DailyCohorts[i].transDate);
    }
}

Here是一个有效的小提琴,供您参考。