是否可以监听所有 Ajax 个电话?
Is it possible to listen all Ajax calls?
我需要的是在收到错误 401(未授权)响应时重定向到某个 url。我的代码中有几个 Ajax 调用,所以我想知道是否有一种通用的方法来收听所有这些调用,并且只有在返回该代码时才重定向到那个 url?
我想在所有页面中包含此代码,以便在收到它时重定向,而无需编辑我代码中的所有 AJAX 调用。
编辑:基本上其他答案不会解释确切的模式
这样做很简单:
<script>
$(document).ajaxComplete(function(response, a){
if(a.status == 401){
return window.location.href = '/whatever/url/you/want';
}
});
</script>
提前致谢
试试这个:
$(document).ajaxStart(function () {
console.log('Request Initiated');
});
$(document).ajaxComplete(function () {
console.log('Request Complete');
});
这个答案是您问题的最佳答案:
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
为了能够检查所有请求并读取,例如响应状态甚至 URL 请求,您应该使用 ajaxSend
:
$( document ).ajaxSend(function( event, request, settings ) {
console.log("Starting request at " + settings.url);
});
request
对象也持有响应状态,settings
有URL.
我需要的是在收到错误 401(未授权)响应时重定向到某个 url。我的代码中有几个 Ajax 调用,所以我想知道是否有一种通用的方法来收听所有这些调用,并且只有在返回该代码时才重定向到那个 url?
我想在所有页面中包含此代码,以便在收到它时重定向,而无需编辑我代码中的所有 AJAX 调用。
编辑:基本上其他答案不会解释确切的模式
这样做很简单:
<script>
$(document).ajaxComplete(function(response, a){
if(a.status == 401){
return window.location.href = '/whatever/url/you/want';
}
});
</script>
提前致谢
试试这个:
$(document).ajaxStart(function () {
console.log('Request Initiated');
});
$(document).ajaxComplete(function () {
console.log('Request Complete');
});
这个答案是您问题的最佳答案:
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
为了能够检查所有请求并读取,例如响应状态甚至 URL 请求,您应该使用 ajaxSend
:
$( document ).ajaxSend(function( event, request, settings ) {
console.log("Starting request at " + settings.url);
});
request
对象也持有响应状态,settings
有URL.