如何从json访问对象以自动下拉

时间:2014-01-04 03:30:04

标签: javascript jquery json

我已经尝试了一段时间来访问json对象的内容。我正在使用jQuery来尝试自动化下拉列表。


这是json代码

{
"Kingston":
{
  "tots": [
    "9.15-10.00am"
  ],
  "kickers": [
    "9.15-10.00am"
  ],
  "strikers": [
    "9.15-10.00am"
  ],
  "academy": [
    "9.15-10.00am"
  ]
}
,
"Knaphill":
{
  "tots": [
    "9.15-10.00am"
  ],
  "kickers": [
    "9.15-10.00am"
  ],
  "strikers": [
    "9.15-10.00am"
  ],
  "academy": [
    "9.15-10.00am"
  ]
}
}

这是我到目前为止javascript的内容。它一直给我一个未定义的错误。

jQuery( document ).ready(function() {
console.log("ready");
$.getJSON("sessions.json", function(data) {
    var key = <?php echo json_encode($form->data['hb_venue']); ?>;
    var cat = "tots";
    var c = [];
    switch (key) {
        case "Kingston":
            c = data.Kingston.cat.split(",");
            break;
        default:
            c = '<option>Choose a class</option>';
    }
    var $sessList = $("#cb_sessions");
    $sessList.empty();
    $.each(c, function(index, value) {
    $sessList("<option>" + value + "</option>");
    });
});
});

2 个答案:

答案 0 :(得分:1)

你必须意识到JSON是一个对象的数组(或多个对象)。

您收到未定义错误的原因是因为您正在错误地访问您的对象。

此代码c = data.Kingston.cat.split(",");错误,因为它等同于执行此操作:

c = data.Kingston."tots".split(",");

这是访问对象的错误方法。这是正确的方法:

c = data["Kingston"][cat][0].split(",");

编辑:额外[0]的原因是因为data["Kingston"][cat]返回一个对象,所以要访问对象中的字符串,您必须通过{{data["Kingston"][cat]访问它。 1}}

答案 1 :(得分:1)

为了获得你的价值观,你应该做这样的事情:

data.Kingston.tots
data.Kingston.kickers
data.Kingston.strikers
data.Kingston.academy