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

时间:2014-05-23 14:28:43

标签: javascript jquery ajax web

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

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

if (false) {
  //disable all ajax requests
}

2 个答案:

答案 0 :(得分:5)

编辑: 有更好的方法,具体情况取决于您不了解的具体情况

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

XMLHttpRequest.prototype.send = function(){};

不仅适用于在jQuery中完成的请求

如果您想重新启用它:

var oSend = XMLHttpRequest.prototype.send; // keep reference
XMLHttpRequest.prototype.send = function(){};

然后致电:

XMLHttpRequest.prototype.send = oSend; // get back reference to prototype method

答案 1 :(得分:5)

如果你的所有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

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));

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