How to handle jQuery ajax post error when navigating away from a page

前端 未结 3 1976
天涯浪人
天涯浪人 2020-12-15 03:27

Is there a way to handle the error from an ajax request within JQuery such that when the user navigates away from the page, the resulting error is ignored?

$         


        
相关标签:
3条回答
  • 2020-12-15 04:15

    It looks like the answer to this is to examine the jqXHR.status. The XMLHttpRequest spec outlines these steps to set the status:

    The status attribute must return the result of running these steps:

    1. If the state is UNSENT or OPENED, return 0 and terminate these steps.

    2. If the error flag is set, return 0 and terminate these steps.

    3. Return the HTTP status code.1

    NOTE also: The error flag indicates some type of network error or request abortion. It is initially unset and is used during the DONE state.

    From what I understand therefore, this code check should fix the issue:

        if (xhr.status == 0)
            alert('error');
    

    1https://web.archive.org/web/20120204040047/http://www.w3.org/TR/XMLHttpRequest/#the-status-attribute

    0 讨论(0)
  • 2020-12-15 04:24

    Checking the status didn't work for me, but

    // Ignore incomplete requests, likely due to navigating away from the page
    if (jqXHR.readyState < 4) {
        return true;
    } 
    

    in the error handler did (4 being DONE).

    0 讨论(0)
  • 2020-12-15 04:32

    I've had to handle this issue too a couple of times.

    I'd recommend binding to the $(window).unload event, setting some variable somewhere, such as in your namespace (App.unloading = true) and then testing it in ajax error callbacks.

    See http://api.jquery.com/unload/

    0 讨论(0)
提交回复
热议问题