Я получаю предопределенные значения, которые я должен вставить в два выбирает:Jquery обещание ждать Аяксу конца
<div id="wrapper">
<select id="first">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select id="second"></select>
</div>
Параметры внутри #second
зависит от выбранного значения в #first
. Эти опции будут загружены с помощью AJAX:
$('#first').change(function() {
$.ajax({
url: "giveMeValues.phpOrWhatever"
}).done(function() {
// just simulating data from ajax call
$('#second').append(
'<option value="a">a</option>'+
'<option value="b">b</option>'+
'<option value="c">c</option>'
);
});
});
Проблема заключается в том, что я могу установить значение #second
после данных Ajax будет загружен. Поэтому следующий код, конечно, не работает:
$('#first').val('2').change();
$('#second').val('b').change();
Так я пытался использовать .promise()
ждать недо вызов Ajax внутри change
обработчик будет завершен:
$('#first').val('2').change();
$('#wrapper').promise().then(function() {
$('#second').val('b');
console.log('setting value...');
});
Но это не работает. Мой вопрос: как я могу дождаться окончания вызова ajax, а затем установить значение #second
?
Здесь у вас есть скрипка этой проблемы: http://jsfiddle.net/W2nVd/
Спасибо за ваше время.
Работы, большое спасибо! – Kasyx
Добро пожаловать! – chrislondon
Я соглашусь как можно скорее. – Kasyx