4

我有一个使用具有各种 AJAX 请求的 Backbone.js 的应用程序。我希望能够拦截所有 AJAX 请求并执行一些请求前和请求后功能,而不必在定义时指定这些功能。

我想要做的一个例子是,如果请求的响应表明用户未登录,则显示全屏模式。

我已经看过通过 jQuery 执行以下操作:

jQuery.ajaxSetup({
  beforeSend: function() {
     return console.log("mybefore");
  }
});

但这似乎错过了使用套接字的 XHR 请求。

我还简要地研究了以下类似的操作:

XMLHttpRequest.prototype.reallySend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(body) {
    console.log('mybefore');
    this.reallySend(body);
};

在这个例子中,我不知道该怎么做after

所以毕竟,我的问题是:是否有一种优雅的方式来覆盖 ajax 函数来进行预处理和后处理,而不改变请求的方式。

(任何backbone.js 特定的解决方案也很好)

4

1 回答 1

0

你需要做这样的事情。

CoffeeScript 代码

define [
    'jquery'
], ($) ->
   loadElement = $('someContent')

   $(document)
      .ajaxStart(-> $(loadElement).show())
      .ajaxStop(-> $(loadElement).hide())
于 2014-06-26T14:33:10.877 回答