我已经尝试了一段时间来访问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>");
});
});
});
答案 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