簡體   English   中英

如何在javascript中循環JSON關聯數組?

[英]How to loop through an JSON associative array in javascript?

我從服務器獲得JSON響應,我必須在javascript中循環遍歷數組並獲取值。 但我似乎無法循環。

數組的JSON響應如下所示:

{
   "1": "Schools",
   "20": "Profiles",
   "31": "Statistics",
   "44": "Messages",
   "50": "Contacts"
}

我只想循環遍歷它以獲取ID和Name並在頁面上填充一些值。

我試過了:

$.each(response, function(key, value) {
    alert(key + ' ' + value);
});

// and 

for (var key in response) {
    alert(key + ' ' + response[key]);
}

但是沒有給出正確的價值觀。

在此先感謝您的幫助。

回復:嗨,我在第二個循環中得到的響應是:

0 {
1 "
2 1
3 "
4 :
5 "
6 S

等等

這意味着它將整個響應作為字符串進行處理,並將其作為鍵/值進行拆分。

謝謝

您的問題是您沒有解析JSON字符串。 因此,您的foreach將遍歷JSON字符串中的字符。

// If you are using jQuery.ajax, you can just set dataType to 'json' 
// and the following line will be done for you
var obj  = jQuery.parseJSON( response );
// Now the two will work
$.each(obj, function(key, value) {
    alert(key + ' ' + value);
});


for (var key in obj) {
    alert(key + ' ' + response[key]);
}
var response = {"1":"Schools","20":"Profiles","31":"Statistics","44":"Messages","50":"Contacts"};

for (var i in response) {
    console.log(i + ' ' + response[i]);
}

工作得很好,你怎么得到你的回應var?

你不需要這樣做,處理字符串是一項無聊的工作。 您可以通過響應創建一個對象。 1: json = eval(xmlHttp.responseText);

但這在某種程度上是不安全的。

  1. json = JSON.parse(xmlHttp.responseText, function(key,value){// can do some other stuff here.});

然后你可以將變量作為普通對象來操作,如obj.a或obj [“a”]。

願這對你有所幫助。

http://jsfiddle.net/sG5sF/

jQuery.each工作正常。 for-each循環都是如此

http://jsfiddle.net/TfjrS/

他們兩個都應該工作。 您的代碼的其他部分可能有錯誤。 response變量是否正確設置為問題中給出的JSON對象? 你在檢查響應statusCode嗎? 成功回應應該是200?

考慮一下我如何使用jQuery解析JavaScript對象以獲得可能的答案。

您可以在純Javascript中使用for-in構造。 當然,您需要注意的是,您只關注對象自己的屬性(像Prototype這樣的庫會污染):

for(var key in response) {
    if(response.hasOwnProperty(key)) {
       ...
    }
}

編輯

你在用jQuery.ajax嗎? 什么是dataType值? 它應該是json 這可能就是您的響應被解釋為字符串的原因。 另外,當你使用console.log響應時,它是否顯示為字符串或對象?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM