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?