【发布时间】:2020-01-26 11:08:33
【问题描述】:
当我的 JavaScript 运行时,它会调用 getDoctorComplete 函数。当 AJAX 请求完成时,它会设置a = chelsea。否则,将发生触发器更改并运行$('#dropdown_hosp').change(...。在$('#dropdown_hosp').change(... 中,它会调用getSpecialty 函数。当用getSpecialty函数完成AJAX请求后,我想得到a的值。我console.log 它,但它包含一个空字符串。我该如何解决这个问题?
var a = '';
$(document).ready(function () {
app.getHospital({
areaId: ''
});
app.getDoctorComplete({
doctorId: doctorId,
doctorel: $('#dropdown_doct')
});
$('#dropdown_hosp').change(function () {
var dropdownspecialty = $('#dropdown_spec');
app.getSpecialty({
hospitalId: $('#dropdown_hosp').val(),
apiUrl: 'api',
special: dropdownSpec
});
});
});
app = function () {
function getHospital({
areaId
}) {
// ...
$.ajax({
// ...
success: function (result) {
// ...
},
// ...
}).done(function () {
$('#dropdown_hosp').select2();
});
};
function getSpecialty({
hospitalId,
apiUrl,
special
}) {
// ...
$.ajax({
// ...
}).done(function () {
// test here
console.log(a);
});
};
function getDoctorComplete({
schdoctor_id,
doctorel
}) {
// ...
$.ajax({
// ...
success: function (result) {
// ...
},
// ...
}).done(function () {
// ...
a = 'chelsea';
b = '..';
$('#dropdown_hosp').val(b).trigger('change');
});
};
return {
getSpecialty: getSpecialty,
getDoctorComplete: getDoctorComplete
}
}();
【问题讨论】:
-
您需要将 ajax 函数包装在
Promise中,在done方法中解析该 Promise 并在调用后调用.then(),如app.getDoctorComplete( ... ).then(() => { Do something after the call here })。 -
尝试添加回调,也许会有帮助
标签: javascript jquery ajax triggers parameter-passing