我遇到以下代码时出现问题。
JSON数据似乎是正确生成的,并且select字段正在清空现有选项,但是,JSON数据生成的选项不会附加到select。
我没有收到控制台错误,我也没看到为什么它没有追加。
有什么建议吗?
<script>
$('#campReg').change(function() {
var $self = $(this);
$.ajax ({
url: 'php/getCamps.php',
data: { id : $self.val()},
dataType:'JSON',
type:'POST',
success: function(data){
var sel = $('#otherCamps').empty();
var toAppend = '';
$.each(data,function(i,data){
toAppend += '<option value="'+data.id+'">'+data.desc+'</option>';
});
$('#sessions').append(toAppend);
}
})
});
</script>
JSON:
{data: [{id:1, desc:06/09 - 06/13 - WEATHER}, {id:3, desc:08/01 - 08/04 - TEST CAMP}]}
答案 0 :(得分:1)
以下是Working Fiddle:
对您的代码进行以下两项更改:
$.each(data.data,function(i,data){
和
$('#otherCamps').append(toAppend);
所以您的代码将是:
$('#campReg').change(function() {
var $self = $(this);
$.ajax ({
url: 'php/getCamps.php',
data: { id : $self.val()},
dataType:'JSON',
type:'POST',
success: function(data){
$('#otherCamps').empty();
var toAppend = '';
$.each(data.data,function(i,data){
toAppend += '<option value="'+data.id+'">'+data.desc+'</option>';
});
$('#otherCamps').append(toAppend);
}
})
});
答案 1 :(得分:0)
我认为success: function(data)
接收数据中的整个json对象,但它有一个包含实际数组的data属性。所以你必须迭代data.data:$.each(data.data, ...
答案 2 :(得分:0)
根据您的评论,您需要使用:
$('#otherCamps').append(toAppend);
而不是:
$('#sessions').append(toAppend);
因为您已将id="otherCamps"
分配给select
元素。