deferred.done() 会在 ajaxComplete() 之前触发吗?
Does deferred.done() fire before ajaxComplete()?
我有一个 ajax 请求与 .done
方法链接:
$.ajax({
type: "POST",
url: $formAction,
data: $form.serialize(),
})
.done(function () {
refreshComplaintCategoryResults($categoryId);
});
还有一个.ajaxComplete()
用来重新初始化一些事件:
$(document).ajaxComplete(function (e, jqXhr, ajaxOptions) {
reinitAll();
});
应该先开火哪个? .done()
方法还是ajaxComplete()
方法?
我希望能够在 reinitAll()
方法之后执行 refreshComplaintCategoryResults()
。我不想再次调用 reinitAll()
方法,因为它会被调用两次(我无法将其从 ajaxComplete()
方法中删除),但我不能将 refreshComplaintCategoryResults()
放在 ajaxComplete()
方法。
更新:
我已将此添加到 ajaxComplete() 方法以获得我想要实现的目标并删除了 .done() 方法。但是,检查 url 以完成操作似乎有点混乱:
$(document).ajaxComplete(function (e, jqXhr, ajaxOptions) {
reinitAll();
if (ajaxOptions.url === "ComplaintWorkflow/GetComplaintCategoryResults")
{
$("tr[data-action-url]")[0].click();
}
});
有没有更好的办法?
Does deferred.done()
fire before ajaxComplete()
?
是的,确实如此。这是 fiddle:
$(document).ajaxComplete(function (e, jqXhr, ajaxOptions) {
console.log("ajaxComplete");
});
$.ajax({
type: "POST",
url: "/echo/json/",
data: "{'a':1}",
})
.done(function () {
console.log("ajax.done");
});
控制台输出:
ajax.done
ajaxComplete
我有一个 ajax 请求与 .done
方法链接:
$.ajax({
type: "POST",
url: $formAction,
data: $form.serialize(),
})
.done(function () {
refreshComplaintCategoryResults($categoryId);
});
还有一个.ajaxComplete()
用来重新初始化一些事件:
$(document).ajaxComplete(function (e, jqXhr, ajaxOptions) {
reinitAll();
});
应该先开火哪个? .done()
方法还是ajaxComplete()
方法?
我希望能够在 reinitAll()
方法之后执行 refreshComplaintCategoryResults()
。我不想再次调用 reinitAll()
方法,因为它会被调用两次(我无法将其从 ajaxComplete()
方法中删除),但我不能将 refreshComplaintCategoryResults()
放在 ajaxComplete()
方法。
更新:
我已将此添加到 ajaxComplete() 方法以获得我想要实现的目标并删除了 .done() 方法。但是,检查 url 以完成操作似乎有点混乱:
$(document).ajaxComplete(function (e, jqXhr, ajaxOptions) {
reinitAll();
if (ajaxOptions.url === "ComplaintWorkflow/GetComplaintCategoryResults")
{
$("tr[data-action-url]")[0].click();
}
});
有没有更好的办法?
Does
deferred.done()
fire beforeajaxComplete()
?
是的,确实如此。这是 fiddle:
$(document).ajaxComplete(function (e, jqXhr, ajaxOptions) {
console.log("ajaxComplete");
});
$.ajax({
type: "POST",
url: "/echo/json/",
data: "{'a':1}",
})
.done(function () {
console.log("ajax.done");
});
控制台输出:
ajax.done
ajaxComplete