[英]Is it possible to prevent triggering the error callback of an AJAX request after calling abort on the request?
[英]Stop / Abort Ajax Request without triggering error
我想捕獲頁面上的所有ajax請求/中止一些請求,具體取決於我們做的一些檢查。 最初是jqXHR.abort(); 但問題是它正在執行我們中止的所有請求的錯誤事件,這是我不想要的。
我創建的示例片段如下所示。
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();
});
PS作為一個限制,我不允許對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();
});
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");
}
});
alert("After Button Click");
});
$( document ).ajaxSend(function(event, jqXHR, ajaxOptions) {
alert("BLOCKED");
throw "Your request is evil! Stop right now!";
});
在這種情況下,這就像“黑客”。 Throw
在每個瀏覽器中工作, 副作用是當前堆棧的中斷。 但要小心alert("After Button Click");
當你扔東西時,它也處於當前堆棧中並且永遠不會執行。
更多關於:
您應該能夠重置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();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.