1

Say if I have a situation like this.

firewall blocking website

How do I detect that with jquery ajax. It hangs on connecting and there is no HTTP Status Code, and no ajax error detected because the file exists.

I have tried using this answer and using error: function(XMLHttpRequest, status, message){ } and using statusCode: { } feature of jquery ajax it doesn't work.

desbest
  • 4,746
  • 11
  • 51
  • 84

1 Answers1

0

There is a similar question with good answer here:

JQuery Ajax - How to Detect Network Connection error when making Ajax call

In short, you can check the "readyState" like:

error: function(XMLHttpRequest) {
    if (XMLHttpRequest.readyState == 0) {
        // Network error (Connection refused, Access denied, etc.)
    }
    else {
        // some other error (HTTP error, etc...)
    }
}

Here is a full working example for my cases:

var params = {name: 'John doe', age: 23};

// Make POST request to the server
$.post('/some/url/to/post', params, function (response) {
    if (!response.result) {
        // I have custom response format - contains validation errors, etc... Sample below:
        //var content = $.isPlainObject(response) ? response.message : response;
        //alert(content, 'Error saving data: Details' + content);
    }
    else {
        // All is fine and data is saved
    }
}).fail(function(jqXHR) {
    var errorMessage = jqXHR.readyState == 0 || !jqXHR.responseText
        ? 'Network error - please check your internet connection or firewalls'
        : jqXHR.responseText;

    alert('Error saving data: Details' +  errorMessage + );
});
Vasil Popov
  • 1,210
  • 14
  • 22