2013-04-25 81 views
0

我明白,我們可以使用下面來處理一個簡單的Ajax JSON響應如何從JSON響應

function onSuccess(response) { 
    console.log("Service call successful with response"+response); 
    $.each(response, function (key, value) { 
     console.log(key+" "+value); 

    }) ; 

檢索鍵/值但是,如何處理像下面JSON響應的陣列?

{ 
    "xyzs":[ 
     { 
     "xyz":{ 
      "id":"515f08380364db3bbe5a27f1", 
      "xyz_id":"320224817603309569" 
     } 
     }, 
     { 
     "xyz":{ 
      "id":"5161f9880364db3bbea86595", 
      "xyz_id":"321033680736886784" 
     } 
     } 
    ] 
} 

的onSuccess()函數不給預期的輸出和idxyz_id以上響應控制檯。

在javascript中有一些for循環,我使用onSuccess()函數獲取id和xyz_id的值嗎?

回答

1

使用此:

var response = { 
    "xyzs":[ 
     { 
     "xyz":{ 
      "id":"515f08380364db3bbe5a27f1", 
      "xyz_id":"320224817603309569" 
     } 
     }, 
     { 
     "xyz":{ 
      "id":"5161f9880364db3bbea86595", 
      "xyz_id":"321033680736886784" 
     } 
     } 
    ] 
}; 

$.each(response.xyzs, function() { 
    var cur = this.xyz; 
    console.log(cur.id, cur.xyz_id); 
}); 

DEMO:http://jsfiddle.net/abBcW/

+0

+1。有效!感謝代碼示例。我想知道Kundan的解決方案爲什麼不起作用,唯一的區別是他沒有使用var cur = this.xyz – Watt 2013-04-25 18:18:30

4

可以代替試試這個:

$.each(response.xyzs, function (index, obj) { 
    console.log(obj.xyz.id+" "+obj.xyz.xyz_id); 
}) ; 

希望這將幫助!

+0

+1快速響應。但是,我不知道發生了什麼問題,我在控制檯中爲給定的JSON獲取了兩行「undefined undefined」。我仍然沒有得到期望值的id和xyz_id – Watt 2013-04-25 18:13:56

+0

@Watt,我錯過了** xyz **節點,更新了我的答案。 – 2013-04-25 18:20:35

0

你的情況。你有一個json對象,並且$ .each()將應用於一個json數組。

因此,您可以通過response.xyzs獲得JSON數組,並且可以遍歷該數組中的每個元素。

$.each(response.xyzs, function (key, value) { 
     console.log(key+" "+value); 
    }) ; 

這裏是更清晰的JSON數組循環示例。

var data = [ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "jjjjjjj"} 
]; 

$.each(data, function(i, item) { 
    alert(data[i].PageName); 
});​ 

$.each(data, function(i, item) { 
    alert(item.PageName); 
});​