【发布时间】:2015-09-24 01:46:54
【问题描述】:
我有一个这样的 jQuery ajax 函数:
jQuery.ajax({
url : '/blabla',
method : 'post',
data: {
bla : bla
}
}).done(function(data) {
// do lots of stuff
});
.. 并且我希望能够添加检查传递给完成回调函数的数据中没有 session_timed_out 值。假设我有许多与上面类似的功能,但它们都做不同的事情,但它们都需要先检查会话是否超时。是否有适当的方法来扩展 done() 以便它最初检查超时?我试图做这样的事情,但失败了:
var myAjax = function(options,callback){
var defaults = {
done: function(data){ //hijack the success handler?
if(check(data)){
callback(data);
}
}
};
jQuery.extend(options,defaults);
return jQuery.ajax(options);
}
当我使用这个扩展函数时,它像以前一样工作,这意味着检查永远不会被调用,因为它似乎被实际实现中的 done() 回调所取代,我想这是有道理的。所以我想知道是否有办法“装饰”或扩展 done() 函数,以便它首先检查会话超时。或者我是否需要手动将相同的会话检查添加到我所有的 ajax 完成中?
【问题讨论】:
-
仅供参考,我上面实现的方法来自:stackoverflow.com/questions/9815058/…
-
jquery 具有全局处理程序 - 请参阅 api.jquery.com/ajaxComplete 我已将它们用于类似的身份验证案例。这不是装饰,而是允许拦截。
标签: javascript jquery ajax