jQuery.ajax() success/failure callbacks called when?

ajax, javascript, jquery

Solution

As you said, it depends on the data type, `script` is a special one for instance, the check is:

- Has the request already completed? (don't fire twice)

- Is the `readyState` "loaded" or "complete"?

For other requests it's checks the following:

- Is it a timeout?

Does `jQuery.httpSuccess()` return true?

- Is the status set?

- Is the response code between 200-299?

- Is the response code 304 or 1223?

Is it modified? (do we care about the [not] updated result?)

Note: The above is for jQuery 1.4.3, jQuery 1.4.2 and below had an additional "success" scenario where a response code of `0` was also "successful", this was done because Opera returns a `0` when it's really a `304`. This is incorrect behavior, and the jQuery team opted to drop support for this quirk, since it caused false-positives in other actual `0` response code cases.

Problem

I've been going through the source to find out the critiera for jQuery.ajax()'s success/failure methods being called. It is not based solely on the status code, it seems to also involve the data type. I always resort to writing custom error handlers using the 'complete'-callback. Exactly which are the critera for the success/failure calls?

Original source

Related problems