我正在尝试从PHP文件中获取JSON并使用它来填充下拉框。
我从PHP文件中获得JSON就好了。它看起来像这样:
[{"state":"AL"},{"state":"AK"},{"state":"AZ"},{"state":"AR"}]
我可以在开发人员工具的响应中看到它已经过时了。但是,当我查看JSON时,第1行是空的,一切都在第2行。不确定这是否是一个问题。
在HTML方面,这就是我所拥有的:
<select id="myselect"></select>
和
$.getJSON('state_get.php', function(data) {
$.each(data, function(key, val) {
$('#myselect').append("<option>"+key.text+"</option>");
})
});
我在下拉列表中得到的是“未定义”的一系列选项。每个JSON值似乎都有一个,所以某些方面正确,但不是一直都是。
任何帮助都将不胜感激。
答案 0 :(得分:3)
每个回调的第一个参数是索引,第二个是值,属性的关键字是State
而不是text
$.getJSON('state_get.php', function (data) {
$.each(data, function (key, val) {
$('#myselect').append("<option>" + val.state + "</option>");
})
});
答案 1 :(得分:2)
您的对象具有属性state
,而不是text
$.each(data, function(key, val) {
$('#myselect').append("<option>" + val.state + "</option>");
});
答案 2 :(得分:2)
循环数组时$.each
的第一个参数是index
,第二个是数组的元素
尝试
$('#myselect').append("<option>"+val.state+"</option>");
数组中的每个对象都是一个元素
答案 3 :(得分:0)
试试这个
$('#myselect').append("<option>"+val.state+"</option>");
答案 4 :(得分:0)
让我们有下拉列表
<select id="myselect" name="stateList" class="state-list ></select>
你可以像这样追加你的价值
var stateSelector = $('select.state-list');
var option = $("<option value=''></option>");
$.each(data, function(key, val) {
option = $("<option value='" + val.state + "'>" + val.state + "</option>");
stateSelector.append(option);
});
$('.state-list').selectpicker('refresh');
//您可以根据需要刷新下拉列表