2

我有来自形状像这样的数据库的 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

4

5 回答 5

6

你只需要使用index,而不是element.index

var zone = JSON.stringify(index);

element指的是冒号右边的值。它没有index属性。

index指冒号左侧的标识符。这正是你想要的。

于 2013-06-19T17:31:37.557 回答
4
$.each(data, function(k,v){
    var zone = k;
    $('#zone').append('<option value="'+zone+'">'+zone+'</option>');
});

小提琴演示

于 2013-06-19T17:31:51.453 回答
1

我认为您真的在寻找第一组索引(或索引)。您可能可以删除该var zone行,然后在第二个循环行上替换zone为。index

也供将来参考,如果您有:

obj = { "akey": 5 };
index = "akey";

您似乎试图将值检索为“ obj.index”。检索数字 5 的方法是这样的......

obj[index] // evalutes to 5
于 2013-06-19T17:36:28.710 回答
1

设置zone如下

var zone = JSON.stringify(index);
于 2013-06-19T17:38:21.400 回答
0

我不知道如何使用 jQuery.each 执行此操作,但您可以像这样获取区域名称:

for (var zone in data) {
  $(#zone").append('<option value="'+zone+'">'+zone+'</option>');
}
于 2013-06-19T18:59:02.533 回答