Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get jquery ajax status code

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 ??

like image 603
Shades88 Avatar asked Aug 16 '11 13:08

Shades88


2 Answers

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()
like image 143
Justin Ethier Avatar answered Nov 12 '22 08:11

Justin Ethier


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.
  });
like image 22
Brad Christie Avatar answered Nov 12 '22 06:11

Brad Christie