выборка не заполняется из данных JSON

0

У меня возникли проблемы со следующим кодом.

Кажется, что данные JSON генерируются правильно, и поле выбора освобождается от существующих параметров, поскольку я ожидаю, что это произойдет, однако параметры, созданные из данных JSON, не добавляются к выбору.

Я не получаю консольную ошибку, и я не вижу, почему она не добавляется.

Какие-либо предложения?

<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
    Какая у вас HTML-разметка?
  • 0
    <select id = "otherCamps" name = "otherCamps" class = "form-control" множественный = "множественный"> <option> temp data </ option> </ select>

3 ответа

1
Лучший ответ

Вот рабочий скрипт:

Внесите эти два изменения в свой код:

$.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);
    }
    })
});
  • 0
    работает .. большое спасибо
0

Основываясь на вашем комментарии, вам необходимо использовать:

$('#otherCamps').append(toAppend);

вместо:

$('#sessions').append(toAppend);

так как вы назначили id="otherCamps" вашему элементу select.

0

Я думаю, что success: function(data) получает весь объект json в данных, но имеет свойство данных, которое содержит фактический массив. Итак, вам нужно перебирать data.data: $.each(data.data,...

  • 0
    изменил свой код на $ .each (data.data, function (i, data)). По-прежнему не работает. Я получаю тот же результат, ничего в выбранной цели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню