如何使用jQuery和Javascript禁用页面中的所有AJAX请求?

use*_*206 4 javascript ajax jquery web

我有一个页面,我想用jQuery禁用所有AJAX请求.

你有什么想法?如果可能的话?

if (false) {
  //disable all ajax requests
}
Run Code Online (Sandbox Code Playgroud)

A. *_*lff 6

编辑:有更好的方法,根据您不知道的具体情况

尝试:{测试它是否支持跨浏览器支持,我没有这样做}

XMLHttpRequest.prototype.send = function(){};
Run Code Online (Sandbox Code Playgroud)

不仅仅是在jQuery中完成的请求

如果要重新启用它:

var oSend = XMLHttpRequest.prototype.send; // keep reference
XMLHttpRequest.prototype.send = function(){};
Run Code Online (Sandbox Code Playgroud)

然后打电话:

XMLHttpRequest.prototype.send = oSend; // get back reference to prototype method
Run Code Online (Sandbox Code Playgroud)

  • 请继续参考 (2认同)
  • @ nettux443这个停止请求被发送,因此没有成功/错误/完全回调涉及 (2认同)

use*_*654 6

如果所有的ajax请求都是通过jQuery ajax方法(包括帮助方法)发送的,那么你可以使用beforeSend来完成.

window.ajaxEnabled = true;
$.ajaxSetup({
    beforeSend: function(){ 
        return window.ajaxEnabled; 
    }
});

$.post("http://www.google.com"); // throws an error
window.ajaxEnabled = false;
$.post("http://www.google.com"); // doesn't throw an error
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/k2T95/3


这里有一个将阻止所有,无论javascript库发送它,也基于全局标志.但是不影响XDomainRequest obj

(function (xhr) {
    var nativeSend = xhr.prototype.send;
    window.ajaxEnabled = true;

    xhr.prototype.send = function () {
        if (window.ajaxEnabled) {
             nativeSend.apply(this, arguments);   
        }
    };
}(window.XMLHttpRequest || window.ActiveXObject));
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/k2T95/4/