[英]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.