我有一個jQuery的AJAX功能是這樣的:如何擴展JQuery的ajax done()方法?
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()函數,以便首先檢查會話超時。或者我需要手動添加這個相同的會話檢查到我所有的ajax完成?
僅供參考我上面實現的方法是:HTTP:// stackoverflow.com/questions/9815058/extending-jquery-ajax-success-globally –
jquery具有全局處理程序 - 請參閱http://api.jquery.com/ajaxComplete/我已將它們用於類似的身份驗證案例。這不是裝飾,而是允許攔截。 – user2864740
看看這個問題:http://stackoverflow.com/questions/12487794/overriding-jquery-functions-best-practice –