Backbone.js拦截AJAX请求

时间:2013-05-29 00:14:47

标签: javascript ajax backbone.js

我有一个使用Backbone.js的应用程序,它有各种AJAX请求。我希望能够拦截所有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特定解决方案都会很好)

1 个答案:

答案 0 :(得分:0)

你需要做这样的事情。

CoffeeScript代码

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

   $(document)
      .ajaxStart(-> $(loadElement).show())
      .ajaxStop(-> $(loadElement).hide())