jquery 如何检查 AJAX 请求是否被浏览器中止

vuv7lop3  于 2023-01-16  发布在  jQuery
关注(0)|答案(3)|浏览(184)

我正在向我的服务器发出长轮询 AJAX 请求

$.ajax({
    url: "someurl.com", 
    success: function(resp) { ... },
    error: function() { ... }
});

但如果短时间内出现一些互联网连接问题,Firefox 10会中止请求,因此我的脚本不会收到来自服务器的响应(在旧版本的FF中,没有此类请求中止)。
我怎样才能发现我 AJAX 请求被浏览器中止了呢?也许有一些事件?或者我可以强迫浏览器在网络连接中断时不中止我的ajax请求吗?

xdyibdwo

xdyibdwo1#

对于XMLHTTPRequest,它给出状态"0",表示request not initialized。您可以捕获该状态,并知道req已被中止。

to94eoyn

to94eoyn2#

或许你可以给通话加个超时?

$.ajax({
        url: "test.html",
        error: function(){
            // will fire when timeout is reached
        },
        success: function(){
            //do something
        },
        timeout: 3000 // sets timeout to 3 seconds
    });
nvbavucw

nvbavucw3#

在.fail(以前的.error)函数中检查jqXHR的中止状态。

let request = $.ajax({
    // your options
})

request.fail(jqXHR,textStatus){
    if(jqXHR.abort){
        alert("Aborted")
    }else{
        alert("Other error")
    }
})

相关问题