我有以下使用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}`);
});
}
答案 0 :(得分:1)
在utils.populateSelect2
方法内部,您将调用ajax调用来获取数据。在那里您可以维护成功或失败回调。如果直接在文档对象上附加ajaxSuccess方法,则对于所有后续的ajax调用,都会调用您的ajaxSuccess方法。
$.ajax({
url: '??',
dataType: '??',
success: function (data, status) {
console.log(data.responseText);
},
error: function(jqXHR, textStatus, errorThrown) {
}
})
答案 1 :(得分:0)
使用JQuery.ajaxSuccess()时,将“捕获”从浏览器发出的所有请求。如果您想特别从一个呼叫中获得答案(通常是这种情况),则需要使用回调。
例如:
$.ajax({
type:"POST",
url:"/myUrl"
success:function(data){
alert(data);
}
});
具有服务器答案的“数据”参数。
P.S:您可以将您的成功回调函数替换为您要使用的任何函数
答案 2 :(得分:0)
jQuery ajax调用代码段。注册成功和错误回调以接收api响应。
$.ajax({
type: 'GET',
url: "https://reqres.in/api/users/2",
dataType:"json",
success: function(data){
console.log("success");
},
error:function(error){
console.log("error");
}
});
答案 3 :(得分:0)
如果我正确理解了您,您可以执行以下操作:
('#drop1').on('select2:select', (e) => {
const selectedMake = e.params.data;
utils.emptySelect2('#drop2');
utils.emptySelect2('#drop3');
utils.populateSelect2(
`apiURL`,
'#drop2',
// success callback
(res) => console.log(res),
// fail callback
() => console.log(fail)
);
$(document).ajaxSuccess(() => {
$('#drop3').select2('close');
$('#drop2').select2('open');
});
});
populateSelect2(url, element, key, success, fail) {
$.get(url)
.done((res) => {
// ...
success(res);
})
.fail(() => {
// ...
fail();
});
}