我有一个用.done
方法链接的ajax请求:
$.ajax({
type: "POST",
url: $formAction,
data: $form.serialize(),
})
.done(function () {
refreshComplaintCategoryResults($categoryId);
});
还有.ajaxComplete()
用于重新初始化某些事件:
$(document).ajaxComplete(function (e, jqXhr, ajaxOptions) {
reinitAll();
});
哪一个应先开火? .done()
方法或ajaxComplete()
方法?
我希望能够在refreshComplaintCategoryResults()
方法之后执行reinitAll()
。我不想再次调用reinitAll()
方法,因为它会被调用两次(我无法从ajaxComplete()
)方法中删除它,但我不能将refreshComplaintCategoryResults()
放在ajaxComplete()
中1}}方法。
更新
我已将此添加到ajaxComplete()方法以获取我想要实现的内容并删除了.done()方法。但是,检查网址以完成操作似乎有点麻烦:
$(document).ajaxComplete(function (e, jqXhr, ajaxOptions) {
reinitAll();
if (ajaxOptions.url === "ComplaintWorkflow/GetComplaintCategoryResults")
{
$("tr[data-action-url]")[0].click();
}
});
有没有更好的方法?
答案 0 :(得分:3)
deferred.done()
之前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