如何覆盖Jquery.ajax函数?

时间:2012-09-26 05:40:10

标签: jquery

我想覆盖Jquery中的$ .ajax函数

我想使用现有功能,需要添加一些其他功能

示例:

将原始ajax函数输入到OriginalAjax变量

 var OriginalAjax = $.ajax 

  $.ajax = function(xhr){

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

可以覆盖$ .ajax函数吗?如果'是'请告诉我们如何实施它?

2 个答案:

答案 0 :(得分:18)

是的,你可以这样做......

var oldAjax = $.ajax;

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

...或...

const oldAjax = $.ajax;

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

但是,根据您的示例判断,您应该使用全局事件处理程序,例如ajaxComplete(),您可以在其中检查响应状态。

答案 1 :(得分:0)

您可以覆盖默认的$ .ajax行为。

请记住$ .ajax正在返回promise()对象,因此您还需要处理附加到done()/ fail()的回调。

也许这篇文章可以帮助您:http://www.svlada.com/blog/override-jquery-ajax-handler/