我有以下代码,它使用 ajaxSuccess()
功能。我面临的问题是每当 AJAX 请求成功完成并且 jQuery 触发 the ajaxSuccess
时事件全部ajaxSuccess()
方法执行。
我认为更好的解决方案是传递回调,但我无法弄清楚如何使用它,因为我是新手。
('#drop1').on('select2:select', (e) => {
const selectedMake = e.params.data;
utils.emptySelect2('#drop2');
utils.emptySelect2('#drop3');
utils.populateSelect2(`apiURL`, '#drop2');
$(document).ajaxSuccess(() => {
$('#drop3').select2('close');
$('#drop2').select2('open');
});
});
AJAX 调用:
populateSelect2(url, element, key) {
$.get(url)
.done((res) => {
if (res) {
let data = $.map(key ? res[key] : res, (obj) => {
obj.text = obj.name;
return obj;
});
data = sortBy(data, 'name');
$(element).select2({
placeholder: 'please enter',
data
});
}
})
.fail(() => {
this.showError(`Failed to call ${url}`);
});
}
最佳答案
在 utils.populateSelect2
方法中,您将调用 ajax 调用来获取数据。在那里您可以维护成功或失败回调。如果您直接将 ajaxSuccess 方法附加到文档对象上,那么对于所有连续的 ajax 调用,您的 ajaxSuccess 方法将被调用。
$.ajax({
url: '??',
dataType: '??',
success: function (data, status) {
console.log(data.responseText);
},
error: function(jqXHR, textStatus, errorThrown) {
}
})
关于javascript - jQuery 中的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52946345/