в чем разница между успехом и.сделано() метод $.Аякс
может кто-нибудь помочь мне?
Я не в состоянии понять разницу между 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