簡體   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