10

I want to know that how can we get ajax status code in jquery. I have this ajax block:

$.ajax{
    type: "GET",
    url: "keyword_mapping.html",
    data:"ajax=yes&sf="+status_flag,

    success: callback.success,
    complete: rollup_filters(),
    failure: function(){
        alert("Failure");
    }
    }

Now in above code, in case of failure, how can i get ajax status code and some description of that status code ??

1
  • 1
    Have a look at the documentation. Commented Aug 16, 2011 at 13:35

4 Answers 4

11

You want to use the error option to capture this. For example:

error: function (jqXHR, textStatus, errorThrown)
    // Your handler here...
}

You can then use the jqXHR object to retrieve information about the failure.

From the documentation:

For backward compatibility with XMLHttpRequest, a jqXHR object will expose the following properties and methods:

  • readyState
  • status
  • statusText
  • responseXML and/or responseText when the underlying request responded with xml and/or text, respectively
  • setRequestHeader(name, value) which departs from the standard by replacing the old value with the new one rather than concatenating the new value to the old one
  • getAllResponseHeaders()
  • getResponseHeader()
  • abort()
Sign up to request clarification or add additional context in comments.

Comments

3

First, you have a few syntax errors. The above is a method call, so it needs to follow $.ajax({ ... }); (with parenthesis).

Secondly, you want to supply the error property as part of the object, not failure (see docs for more information).

Third, when you do bind to an error, you are supplied three parameters: jqHXR, textState, errorThrow. These arguments will supply you the details of a failed AJAX call. (More specifically, try jqXHR.status)

Alternatively, you can bind to the $.ajaxError function as well.


Update To keep this more up-to-date, you should now be following the Deferred API (as of jQuery 1.5), which would make binding to an error look something like the following:

$.ajax({ /* options */ })
  .done(function( data, textStatus, jqXHR ){
    // here you bind to a successful execution.
  .fail(function( jqXHR, textStatus, errorThrown ){
    // Here you can catch if something went wrong with the AJAX call.
  })
  .always(function(){
    // here you can execute code after both (or either) of
    // the above callbacks have executed.
  });

Comments

2

Change your failure callback to

error:function (xhr, options, error){
    alert(xhr.status);
    alert(error);
}

Comments

1

There is nothing like failure in ajax settings. Replace failure by error and you get 3 arguments in the error callback. First argument is the xhr object which has a status property in it.

$.ajax{
    type: "GET",
    url: "keyword_mapping.html",
    data:"ajax=yes&sf="+status_flag,

    success: callback.success;
    complete: rollup_filters(),
    error: function(jqXHR, textStatus, errorThrown){
         alert(jqXHR.status);
    }
    }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.