2017-02-23 25 views
0

我成功(測試)調用一個PHP腳本的ajax請求。這是我需要進行工作的部分代碼:檢索json編碼的多維數組與ajax

success: function (response, status) { 
     $.each(response, function (i, item) { 
      alert(item.id); 

item.id只是...沒有。

這是生成 - json_encoded陣列由PHP頁面:

[ 
    { 
    "conto": "1" 
    }, 
    { 
    "id": "4", 
    "activity_id": "50", 
    "path": "Testo/base.png", 
    "title": "Ffgf", 
    "descrizione": "Tttt" 
    }, 
    { 
    "id": "8", 
    "activity_id": "50", 
    "path": "Testo/61FCFUX_IMG_0536.PNG", 
    "title": "Hggggg", 
    "descrizione": "Tgg" 
    } 
] 

我該怎麼辦錯了嗎?如果您注意到,這是兩個數組之間的數組合:第一個數據庫中只報告「conto」,另一個是通過數據庫獲取元素生成的列表。

+0

在第一次迭代,'item.id'將不被限定,因爲它簡單地在該對象中不存在。檢查:'if(item.id){//做你的東西}' –

回答

1

你的第一個數組不包含id,所以你得到未定義的值。跳過第一陣列:

$.each(response, function (i, item) { 
     if(i==0) 
     { 
      alert(item.costo); 
      } 
      else 
      { 
      alert(item.id); 
      //Or better to use console 
      console.log(item.id); 
      } 

     }); 
+0

不工作......這個問題我認爲它與它是一個多維數組有關。 –

+0

然後檢查你的迴應,因爲根據你的例子它應該工作..看例子:https://jsfiddle.net/sqdjk1zL/ –

+0

@GiovanniPalerma你在說什麼多維數組? – Coder

-1

我相信你的問題與你的參考。由於你的JSON對象包含一個數組,你需要用下標引用它。嘗試將item.id更改爲item [i] .id。就像每個函數遍歷數組一樣,它可以引用每個對象中的id字段。

編輯:這裏是工作代碼。

$(document).ready(function(){ 

    var source = '[{"conto":"1"},{"id":"4","activity_id":"50","path":"Testo\/base.png","title":"Ffgf","descrizione":"Tttt"},{"id":"8","activity_id":"50","path":"Testo\/61FCFUX_IMG_0536.PNG","title":"Hggggg","descrizione":"Tgg"}]'; 
    source = JSON.parse(source); 
    var cellcount = length(source); 

    for(var i = 0; i < cellcount; i++){ 
     console.log(source[i].id); 
    } 

}); 

function length(obj) { 
    return Object.keys(obj).length; 
} 
+0

OP使用jQuery的'.each()'所以'item'將是實際的對象。 http://api.jquery.com/jquery.each/。即使不是這種情況,它是'item [i]'(數組/對象索引),而不是'item(i)'(函數調用)。 –

+0

@MagnusEriksson正如你從編輯答案中看到的那樣,我添加了一些代碼來顯示我在說什麼。在修復它之前,我只需要一分鐘就能完成整個過程。不要那麼快就會讓人失望。 – Daniel

+0

@丹尼爾不要擔心降價。他們只是試圖建議,以便你即興創作。 – Coder