5

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

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

例子:

将原始 ajax 函数放入 OriginalAjax 变量中

 var OriginalAjax = $.ajax 

  $.ajax = function(xhr){

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

是否可以覆盖 $.ajax 函数?如果“是”,请告知如何实施?

4

2 回答 2

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(),您可以在其中检查响应状态。

于 2012-09-26T05:42:05.200 回答
0

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

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

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

于 2013-11-10T21:23:41.997 回答