Javascript 停止/中止Ajax请求而不触发错误
我想捕获页面上的所有ajax请求,根据我们所做的一些检查停止/中止一些请求。最初jqXHR.abort()可以工作,但问题是它正在执行我们中止的所有请求的错误事件,我不希望这样 下面是我创建的示例片段Javascript 停止/中止Ajax请求而不触发错误,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想捕获页面上的所有ajax请求,根据我们所做的一些检查停止/中止一些请求。最初jqXHR.abort()可以工作,但问题是它正在执行我们中止的所有请求的错误事件,我不希望这样 下面是我创建的示例片段 var newajaxOptions; $( ":button" ).on("click", function () { var URL = "#"; $.ajax({ url: URL, type: 'GET', async: fa
var newajaxOptions;
$( ":button" ).on("click", function () {
var URL = "#";
$.ajax({
url: URL,
type: 'GET',
async: false,
success: function(){
alert("AJAX SUCCESS");
},
error: function(){
alert("AJAX ERROR");
}
});
});
$(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
alert("BLOCKED");
//set options to global variable so can re initiate ajax call later
newajaxOptions = ajaxOptions;
jqXHR.abort();
});
另外,作为一个限制,我不允许对ajax请求进行任何修改,因此我只能截取所有关于细节的请求检查,停止那些不允许继续的请求检查。jqXHR确实很有帮助
if(jqXHR.aborted)
return;
和脚本:
var newajaxOptions;
$( ":button" ).on("click", function () {
var URL = "#";
$.ajax({
url: URL,
type: 'GET',
async: false,
success: function(){
alert("AJAX SUCCESS");
},
error: function(jqXHR, textStatus, errorThrown){
if(jqXHR.aborted)
return;
alert("AJAX ERROR");
}
});
});
$( document ).ajaxSend(function(event, jqXHR, ajaxOptions) {
alert("BLOCKED");
//set options to global variable so can re initiate ajax call later
newajaxOptions = ajaxOptions;
jqXHR.abort();
});
编辑:抛出黑客 在这种情况下,这有点像“黑客”
Throw
在每个浏览器中都有效,的副作用是当前堆栈的中断。但要小心警报(“点击按钮后”)
也在当前堆栈中,当您抛出某些内容时,它将永远不会执行
更多关于:
您应该能够在ajaxSend中重置错误事件
$( document ).ajaxSend(function(event, jqXHR, ajaxOptions) {
alert("BLOCKED");
//set options to global variable so can re initiate ajax call later
newajaxOptions = ajaxOptions;
ajaxOptions.error = null;
jqXHR.abort();
});
谢谢Krzysiek的回答。不过,我有一点进退两难,我们不允许手动更改ajax调用上的代码,有没有办法在ajaxSend方法中动态添加if语句?尝试了更改后,ajax请求的错误函数仍然被触发。P.S我无法添加if(jqXHR.aborted)返回;对于ajax请求,正如在实际设置中一样,由于一些限制,我们无法触及$.ajax(),这就是为什么我们使用ajaxSendMaybe
throw'stop!'捕获ajax请求的原因代码>而是中止?一个问题,将抛出“停止!”;跨不同的浏览器工作?
$( document ).ajaxSend(function(event, jqXHR, ajaxOptions) {
alert("BLOCKED");
//set options to global variable so can re initiate ajax call later
newajaxOptions = ajaxOptions;
ajaxOptions.error = null;
jqXHR.abort();
});