我有一个使用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特定解决方案都会很好)
答案 0 :(得分:0)
你需要做这样的事情。
CoffeeScript代码
define [
'jquery'
], ($) ->
loadElement = $('someContent')
$(document)
.ajaxStart(-> $(loadElement).show())
.ajaxStop(-> $(loadElement).hide())