Capture 404 status with jQuery AJAX

Capture 404 status with jQuery AJAX

Replace your error function as follows...

error:function (xhr, ajaxOptions, thrownError){
    if(xhr.status==404) {
        alert(thrownError);
    }
}

 

how to handle 404 error in jquery.post

You can use a global error handler:

$(document).ajaxError(function(e, xhr, settings, exception) {

});



How can I catch jQuery AJAX errors?

try this:

$.ajax({
    url: remoteURL,
    type: 'GET',
    error: function (err) {
        console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
    }
}).always(function(jqXHR, textStatus) {
    if (textStatus != "success") {
        alert("Error: " + jqXHR.statusText);
    }
});

XHR Listener:

$.ajax({
    url: remoteURL,
    type: 'GET',
    xhr: function(){
        var xhr = new window.XMLHttpRequest();
        xhr.addEventListener("error", function(evt){
            alert("an error occured");
        }, false);
        xhr.addEventListener("abort", function(){
            alert("cancelled");
        }, false);

        return xhr;
    },
    error: function (err) {
        console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
    }
});

 

 

Ajax GET url on error jqxhr

Save your url in a variable. And you can use it in the error function. Obviously the url will be same as it was supplied in the url parameter of the ajax request

var url = 'somewhere/foo';

$.ajax({
    type: 'get',
    url: url,
    context: this,
    success: this.mySuccess,
    error: this.myError,
    cache: false,
    error: function(jqXHR, exception) {
       //use url variable here   
    }
});

Another option can be this

$.ajax({
    type: 'get',
    url: 'https://google.com',
    context: this,
    success: this.mySuccess,
    error: this.myError,
    cache: false,
    beforeSend: function(jqXHR, settings) {
        jqXHR.url = settings.url;
    },
    error: function(jqXHR, exception) {
        alert(jqXHR.url);
    }
});

FIDDLE

 

 回答2

I believe the simplest way would be:

this.url

The this should be bounded to the ajax object instance that has the url attribute.

 

 

 $.ajax({
        url: getRootPath_web() + "//SelfRegistration/IsClientSelfRegistrationEnabled",
        type: "GET",
        dataType: 'json',
        headers: {"__RequestVerificationToken": token},
        success: function(res) {
            console.log(res);
            selfRegistrationIsPublished = res;
        },
       fail: function(jqXHR, textStatus) {
           swal('Error', jqXHR.message);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            swal('Error', `Request ${this.url} failed, status = ${xhr.status}, statusText = ${xhr.statusText}, responseText = ${xhr.responseText} `);
        }
    });

 

 

 

posted @ 2020-12-30 14:16  ChuckLu  阅读(183)  评论(0编辑  收藏  举报