[英]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]
对象的每个属性,其中有两个date
和data
。
因此,您的匿名函数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.