Difference between .success() and .complete()?

As of jQuery 1.5, all jQuery's AJAX methods return a jqXHR object that provides .error(), .success(), and .complete() methods.

What is the difference between .success() and .complete()?


Solution 1:

.success() only gets called if your webserver responds with a 200 OK HTTP header - basically when everything is fine.

However, .complete() will always get called no matter if the ajax call was successful or not - maybe it outputted errors and returned an error - .complete() will still get called.

It's worth mentioning that .complete() will get called after .success() gets called - if it matters to you.

  • http://api.jquery.com/ajaxComplete/
  • http://api.jquery.com/ajaxSuccess/

Solution 2:

success() is called when the server returns a 200 status code, complete() is called always when the request is complete, no matter the outcome.