是否可以监听所有Ajax调用?

时间:2017-04-25 22:12:55

标签: javascript ajax http-status-code-401

我需要的是在收到错误401(未授权)响应时重定向到某个URL。我的代码中有几个Ajax调用,所以我想知道是否有一般方法来监听所有这些调用,并且只有在返回该代码时才会重定向到该URL?

我想在所有页面中包含此代码,因此在收到它时会重定向,而无需编辑代码中的所有AJAX调用。

编辑:基本上其他答案不能解释确切的模式

通过这样做完成:

<script>
    $(document).ajaxComplete(function(response, a){
        if(a.status == 401){
            return window.location.href = '/whatever/url/you/want';
        }
    });
</script>

提前谢谢

2 个答案:

答案 0 :(得分:3)

试试这个:

  

$(document).ajaxStart(function(){console.log(&#39; Request Initiated&#39;);   }); $(document).ajaxComplete(function(){console.log(&#39; Request   完整的&#39;); });

答案 1 :(得分:0)

此答案为您的问题提供了最佳答案:

Add a "hook" to all AJAX requests on a page

这段代码(根据上面的答案稍作修改)说明了如何从开始到结束拦截 ajax 调用:

(function() {
    var origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function() {
        console.log('request started!');
        this.addEventListener('load', function() {
            console.log('request completed!');
            console.log("Server status code: ", this.status); 
            console.log("Ready state: ", this.readyState); 
            console.log("Server response:", this.responseText);
        });
        origOpen.apply(this, arguments);
    };
})();

什么是就绪状态: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState