Разница между .success() и .complete()?

Как и в jQuery 1.5, все методы jQuery AJAX возвращают объект jqXHR, который предоставляет методы .error(), .success() и .complete().

В чем разница между .success() и .complete()?

Ответ 1

.success() только вызывается, если ваш веб-сервер отвечает заголовком 200 OK HTTP - в основном, когда все в порядке.

Однако .complete() всегда будет вызываться независимо от того, был ли вызов ajax успешным или нет - возможно, он вывел ошибки и возвратил ошибку -.complete() все равно будет вызван.

Следует отметить, что .complete() будет вызван после вызова .success() - если это важно для вас.

Ответ 2

success() вызывается, когда сервер возвращает код состояния 200, complete() вызывается всегда, когда запрос завершен, независимо от результата.

Ответ 3

success() вызывается, когда сервер возвращает код состояния 200, complete() вызывается после success(). и я вижу некоторую разницу:

В success() вы не можете получить строку ответа xml, которую вы используете с помощью $.ajax() и установите dataType:xml Но в complete() вы можете получить строковый формат прочитанного XML-документа, используя

$.ajax({
url:'??',
dataType:'xml',
oncomplete: function(data,status){
console.log(data.responseText);
}
})