【问题标题】:How to disable all AJAX requests in a page with jQuery and Javascript ?如何使用 jQuery 和 Javascript 禁用页面中的所有 AJAX 请求?
【发布时间】:2014-07-12 23:14:13
【问题描述】:

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

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

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

【问题讨论】:

  • 您为什么要这样做?您可以访问所有代码吗?
  • 使用像 disable_all_ajax 这样的主变量并在所有 ajax 调用中添加检查。 if(disable_all_ajax === true){ alert('ITS DISABLED MUHAHA');}
  • setTimeout(function(){ callback();},9999999); ;P
  • 网站是缓存的,所以即使服务器宕机,用户也可以访问页面,但是ajax请求会导致网络错误。是的,我可以访问所有代码。

标签: javascript jquery ajax web


【解决方案1】:

编辑:有更好的方法,取决于你的具体情况,我不知道

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

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

【讨论】:

  • 开箱即用,很好。以及如何重新启用?
  • 我会将其添加到您的答案中,否则我们会收到后续问题。我认为 OP 不知道他在这里做什么。也许一些额外的信息为什么这有效。
  • @nettux443 this stop 请求发送,所以不涉及成功/错误/完成回调
  • 只是想确认它适用于 Safari 和任何其他 WebKit 浏览器。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 2011-07-07
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    相关资源
    最近更新 更多