繁体   English   中英

jQuery-如何使用每个循环遍历JSON

[英]JQuery - How to loop through JSON using each

我已经缓存了从Ajax调用返回的JSON,需要循环遍历以显示它。 我收到错误消息“无法读取未定义的属性”标题”。 有人可以帮忙吗?

 $.each(cache['cat-'+cat], function(i, jd) {               
    var title= jd.title;  //issue is here
  )}

当我console.log(cache['cat-'+cat])我得到以下内容:

Object {
  date: "2016-07-28T15:08:03.596Z", 
  data: '[{"id":471,"title":"Lines and Calls","solution_areas":"lines-calls"}]'
}

当我在循环内进行console.log(jd)时,我得到以下信息:

2016-07-28T15:13:14.553Z

如果我使用console.log(jd.data); 我懂了

未定义

我尝试了以下方法,但它们也不起作用:

var title= jd.data.title;  
var title= jd.data[0].title;  

谁能告诉我我在做什么错?

当前使用它的方式, each方法都将迭代cache['cat-'+cat]对象的每个属性,其中有两个datedata

因此,您的匿名函数function(i, jd)将被调用两次。 第一次, jd将是date属性的值(一个字符串),第二次它将是data属性的值(也是一个字符串,碰巧被格式化为JSON)。

data的内容需要先解析,然后才能作为对象/数组进行访问,并且鉴于data已格式化为数组,我想您实际上是想对其进行迭代。 给定提供的示例,我将其更改为:

$.each(JSON.parse(cache['cat-'+cat].data), function(i, jd) {               
    var title= jd.title;  
 });

您没有正确访问它。 并且由于cache['cat-'+cat]已经是需要的对象,因此$.each的目的是$.each 应该

var title= JSON.parse(cache['cat-'+cat].data)[0].title;

(因为标题位于data ,并且data为JSON)。

演示:

 var obj = { date: "2016-07-28T15:08:03.596Z", data: '[{"id":471,"title":"Lines and Calls","solution_areas":"lines-calls"}]' }; var title= JSON.parse(obj.data)[0].title; console.log(title); 

只需了解什么是JSON和什么STRING

cache ['cat-'+ cat] .data返回一个字符串,该字符串在传递给每个循环之前需要转换为JSON:

var dataCacheReturned = cache['cat-'+cat];

var objCache = dataCacheReturned.data; //Its return a string 
objCache = JSON.parse(objCache); //Parse string to json

$.each(objCache, function(i, jd) {
  var title = jd.title; 
  console.log(title);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM