У меня возникли проблемы со следующим кодом.
Кажется, что данные 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}]}
Вот рабочий скрипт:
Внесите эти два изменения в свой код:
$.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);
}
})
});
Основываясь на вашем комментарии, вам необходимо использовать:
$('#otherCamps').append(toAppend);
вместо:
$('#sessions').append(toAppend);
так как вы назначили id="otherCamps"
вашему элементу select
.
Я думаю, что success: function(data)
получает весь объект json в данных, но имеет свойство данных, которое содержит фактический массив. Итак, вам нужно перебирать data.data: $.each(data.data,...