我需要等待某个ajax请求完成才能继续。由于此请求是从不同的锚点触发的,因此我将其包装在函数中。 第一个ajax的函数完成后会发生什么,是第二个ajax请求。
起初,我试图等待第一个完成使用$.ajaxComplete()
,因为之后执行了第二个ajax请求而遇到无限循环。
我找到了一些关于使用$.when
的示例,但没有一个显示是否可以使用方法而不是延迟。
这是我想做的事情:
$.when( functionFirstAjaxCall(data) ).then( function() {
// after first ajax request has finished, do the following:
$.ajax({
//...
});
});
functionFirstAjaxCall()
是否需要具有特定的返回值,或者我如何才能使这个值有效?顺便说一句,该解决方案不需要使用$.when
。
更新:我通过创建Vandesh建议的自定义事件来实现它。
function first() {
$.ajax({
// ...
success: function (d) {
$.event.trigger({
type: "finished",
data: d
});
}
});
}
$(document).on('finished', second());
无论如何,使用$.when
会有一个简单的解决方案吗?
答案 0 :(得分:3)
是的,我们可以!为你做这样的工作?
function first() {
var a = $.ajax({
// ...
});
return a.promise();
}
first().done(function(){
//Im done
});
答案 1 :(得分:1)
你可以做类似的事情 -
$.ajax({// First AJAX call
url: ""
}).done(function() {
$.ajax({//Second AJAX call on completion of first
url: ""
}).done(function() {
});
});
详细了解$.ajax()
的使用情况