使用json响应数据填充下拉列表

时间:2014-08-26 20:39:27

标签: javascript jquery json

我有json数据,我想将这些值填充到选择框中.. 我在代码下面尝试了{FIDDLE}但是它没有填充下拉列表,请帮助我。

var obj= 
     {
    "AED": "United Arab Emirates Dirham",
    "AFN": "Afghan Afghani",
    "ALL": "Albanian Lek",
    "AMD": "Armenian Dram", 
    "XOF": "CFA Franc BCEAO",
    "XPF": "CFP Franc",
    "YER": "Yemeni Rial",
    "ZAR": "South African Rand",
    "ZMK": "Zambian Kwacha (pre-2013)",
    "ZMW": "Zambian Kwacha",
    "ZWL": "Zimbabwean Dollar"

};

for(var i=0;i<obj.length;i++)
{
    var option=$('<option></option>').text(obj.[i]);
  $('select').append(option);

}

HTML

<select></select>

4 个答案:

答案 0 :(得分:3)

试试这个:

for (var o in obj) {
    var option=$('<option></option>').text(obj[o]);
    $('select').append(option);
}

您也可能需要每个选项的值:

for (var o in obj) {
    var option=$('<option></option>').val(o).text(obj[o]);
    $('select').append(option);
}

小提琴:http://jsfiddle.net/5czG4/77/

答案 1 :(得分:2)

obj[i]中没有任何点。

因为你正在使用jQuery,你可以这样做:

$.each(obj, function(key, value){
    $select.append( $("<option value='" + key + "'>" + value + "</option") );
});

答案 2 :(得分:2)

无法使用数字下标访问对象成员(除非它们的键恰好是数字);你必须使用他们的钥匙。迭代对象的键有一个非常简单的语法:

for (var key in obj) {
    var option=$('<option></option>').text(obj[key]);
    $('select').append(option);
}

答案 3 :(得分:1)

如上所述,所有答案都可以正常工作,您尝试访问对象,就像它是一个数组一样。这是我的:

var keys = Object.keys(obj);

for(var i=0;i<keys.length;i++)
{
    var option= $('<option value="' + keys[i] + '">' + obj[keys[i]] + '</option>');
    $('select').append(option);
}

在jsfiddle上: http://jsfiddle.net/5czG4/75/