select不是从JSON数据填充的

时间:2014-04-15 07:24:20

标签: javascript php jquery json

我遇到以下代码时出现问题。

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}]}

3 个答案:

答案 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元素。