2012-09-26 55 views
4

我想重寫$就功能jQuery的如何重寫Jquery.ajax函數?

我想利用現有的功能,需要添加一些其他的功能

例子:

獲得原始的AJAX功能以OriginalAjax變量

var OriginalAjax = $.ajax 

    $.ajax = function(xhr){ 

     if(xhr.status ==401) 
     { 
      // Diplay Error in dialog box; 
     } 
     return(OriginalAjax(xhr)); 
    }); 

是否可以重寫$ .ajax函數?如果'是'請讓知道如何執行它?

+0

有沒有什麼具體的你更多的需要? – Lian

回答

13

是的,你可以做到這一點...

var oldAjax = $.ajax; 

$.ajax = function() { 
    // Do your magic. 
    return oldAjax.apply($, arguments); 
}; 

......或者......

const oldAjax = $.ajax; 

$.ajax = (...args) => { 
    // Do your magic. 
    return oldAjax(...args); 
}; 

然而,你的榜樣來看,你應該只使用一個全球性的事件處理程序如ajaxComplete(),您可以在其中檢查響應狀態。

+2

爲什麼這沒有被標記爲正確答案? –

+0

我在[這個答案稍微擴展了一點。](https://github.com/jmb-mage/ajax-request-tracker/blob/master/jquery.ajax.tracker.js) –