Detecting that a jQuery.ajax call failed because the page is reloading?

前端 未结 3 1643
盖世英雄少女心
盖世英雄少女心 2021-02-08 09:23

I do lots of $.ajax calls, and I handle errors from them in a way that throws up a message. I find that if an ajax call is in progress while the page gets reloaded, e.g. click

3条回答
  •  悲&欢浪女
    2021-02-08 09:48

    var unloading = false;
    $.ajax(...) ...
     .error(function(jqXHR) {
        if (unloading) return; // Ignore errors caused by navigating away
        // Now, check for real errors ..
    });
    $(window).unload(function() {unloading = true;});
    

    The above technique does not work for a periodically refreshing page (for example every half seconds). I have figured out that the error caused by refreshing the page can be avoided using delaying the error handling process by a small amount of time.

    Example:

    $.ajax(...)
    .success(...)
    .error(function(jqXHR) {
    setTimeout(function() {
      // error showing process
    }, 1000);
    });
    

    In addition to that

    window.onbeforeunload = function() {//stop ajax calls}

    event can be used for less frequently refreshing ajax calls.

提交回复
热议问题