根据jQuery文档,必须使用文档上的回调函数实现global Ajax event handlers。否则,本地$.ajax()会使用promises实现事件。
有没有办法使用promises方法处理全局Ajax事件,如.done(),.fail(),.always()和.then()?
我正在寻找一种方法来为不依赖// current way of doing this:
// $(document).ajaxSuccess(_handleAjaxSuccess);
//
// some ideas of what it could look like:
// $.ajaxSuccess(_handleAjaxSuccess);
// $.ajax.done(_handleAjaxSuccess);
// $.ajaxSetup({ done: _handleAjaxSuccess });
的全局ajax事件声明事件处理程序,例如:
select * into #a from(
select 1 prod,1 id union all
select 1,2 union all
select 1,5 )a
select * into #b from(
select 1 id,31 cat union all
select 1,39 union all
select 1,55 union all
select 2,61 union all
select 2,62 union all
select 5,98 union all
select 5,99 ) b
select * from #a a inner join #b b on a.id=b.id
答案 0 :(得分:1)
不,您无法使用promises方法.done()
,.fail()
,.always()
和.then()
来处理全局Ajax事件。
这些是Promise方法,因此Promise需要在它们可用之前存在。
根据定义,jQuery的全局ajax事件处理程序在定义它们时不会附加到任何特定的Promise。相反,它们由jQuery存储,并在每次某些ajax事件发生时在内部调用。
作为jQuery的用户,我们不必担心这些内部调用是如何进行的,但我们可以非常确定方法中的一个或另一个.done()
,.fail()
,{涉及{1}}和.always()
。
如果你想了解更多,你可以深入研究jQuery源代码,但我怀疑额外的理解是否特别有价值。
答案 1 :(得分:0)
尽管jqXHR
个实例支持promises接口,但jquery上的全局Ajax事件不支持它,目前还没有计划实现它(jquery forum)。