我有来自数据库的JSON,形状如下:
var data = {
"zone01": [{
"region": "North",
"state": "New York",
"county": "Albany",
"code": "01"
}, {
"region": "North",
"state": "New York",
"county": "Albany",
"code": "05"
}, {
"region": "North",
"state": "Maine",
"county": "Auburn",
"code": "07"
}],
"zone02": [{
"region": "South",
"state": "Florida",
"county": "Gainseville",
"code": "82"
}, {
"region": "South",
"state": "Florida",
"county": "Macclenny",
"code": "73"
}]
};
我正在尝试获取第一组值“zone01”,“zone02”等的列表...以便填充选择输入。通过选择区域,您可以在列表中选择,但我似乎无法获得区域列表。
我试过了:
$.each(data, function(index, element){
var zone = JSON.stringify(element.index);
$('#zone').append('<option value="'+zone+'">'+zone+'</option>');
});
但只是未定义。这是jsfiddle。
更新的完成代码
以下是我的竞争代码:jsFiddle
答案 0 :(得分:6)
您只需使用index
,而不是element.index
。
var zone = JSON.stringify(index);
element
指的是冒号右侧的值。它没有index
属性。
index
是指冒号左侧的标识符。这正是你想要的。
答案 1 :(得分:4)
$.each(data, function(k,v){
var zone = k;
$('#zone').append('<option value="'+zone+'">'+zone+'</option>');
});
答案 2 :(得分:1)
我认为你真的在寻找第一套 indices (或索引)。您可以删除var zone
行,只需将zone
替换为第二个循环行上的index
。
如果您有:
,也可供将来参考obj = { "akey": 5 };
index = "akey";
您似乎尝试将值检索为“obj.index
”。检索数字5的方法就像这样......
obj[index] // evalutes to 5
答案 3 :(得分:1)
按如下方式设置zone
var zone = JSON.stringify(index);
答案 4 :(得分:0)
我不知道如何使用jQuery.each,但你可以得到这样的区域名称:
for (var zone in data) {
$(#zone").append('<option value="'+zone+'">'+zone+'</option>');
}