в чем разница между успехом и.сделано() метод $.Аякс
может кто-нибудь помочь мне?
Я не в состоянии понять разницу между success
и .done()
of $.ajax
.
Если возможно, пожалуйста, приведите примеры.
4 ответа:
короче говоря, отделяя функцию обратного вызова успеха от функции ajax, чтобы позже вы могли добавить свои собственные обработчики без изменения исходного кода (шаблон наблюдателя).
пожалуйста, найдите более подробную информацию здесь:https://stackoverflow.com/a/14754681/1049184
success
срабатывает только в случае успешного вызова AJAX, т. е. в конечном итоге возвращает состояние HTTP 200.error
пожаров, если это не удается, иcomplete
когда запрос заканчивается, независимо от успеха.в jQuery 1.8 на отложенный объект. Отложено (а теперь
Promise
, который имеет полную поддержку родного браузера в Chrome и FX) позволяют цепочку асинхронных действий:$.ajax("parent"). done(function(p) { return $.ajax("child/" + p.id); }). done(someOtherDeferredFunction). done(function(c) { alert("success: " + c.name); });
эту цепочку функций легче поддерживать, чем вложенную пирамиду обратных вызовов, которые вы получаете с
success
.однако, обратите внимание, что
done
теперь устарел в пользуPromise
синтаксис, который используетthen
вместо:$.ajax("parent"). then(function(p) { return $.ajax("child/" + p.id); }). then(someOtherDeferredFunction). then(function(c) { alert("success: " + c.name); }). catch(function(err) { alert("error: " + err.message); });
это стоит принять, потому что
async
иawait
расширение обещаний улучшенный синтаксис (и обработка ошибок):try { var p = await $.ajax("parent"); var x = await $.ajax("child/" + p.id); var c = await someOtherDeferredFunction(x); alert("success: " + c.name); } catch(err) { alert("error: " + err.message); }
.success()
вызывается только в том случае, если ваш веб - сервер отвечает заголовком HTTP 200 OK-в основном, когда все в порядке.обратные вызовы, прикрепленные к done (), будут запущены, когда отложенный будет разрешен. Обратные вызовы, прикрепленные к fail (), будут запущены, когда отложенный будет отклонен.
promise.done(doneCallback).fail(failCallback) .done() has only one callback and it is the success callback