Різниця між .success () та .complete ()?


103

За JQuery 1.5, методу AJAX всіх JQuery в повертає jqXHRоб'єкт , який забезпечує .error(), .success()і .complete()методу.

У чому різниця між .success()і .complete()?


2
@nix Чи є у вас посилання, яке детальніше описує застарілі речі?
neoneye

@neoneye Ctrl + F "Повідомлення про депресію" на api.jquery.com/jQuery.ajax/
ThatGuy

Відповіді:


223

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

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

Варто згадати, що .complete()вас дзвонять після того, як вас .success() дзвонять - якщо це важливо для вас.


11

success()викликається, коли сервер повертає код 200 статусу, complete()викликається завжди, коли запит завершено, незалежно від результату.


1

success()викликається, коли сервер повертає 200 код статусу, complete()викликається післяsuccess() . і я бачу деяку різницю:

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

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

0

success()викликається , коли сервер повертає success status code, як: 200,201 т.д.

complete()називається завжди, коли запит завершено. (незалежно від того, це успіх / відповідь на помилку від сервера.)


Так,

  • коли є successвідповідь від сервера: complete()і success()викликається.
  • коли є errorвідповідь від сервера: complete()і error()викликається.

Для чого ви можете використовувати complete(): припустимо, beforeSend()ви показуєте loader image, а в complete(), ви можете це приховати loader image.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.