в чем разница между успехом и.сделано() метод $.Аякс


может кто-нибудь помочь мне?
Я не в состоянии понять разницу между success и .done() of $.ajax.

Если возможно, пожалуйста, приведите примеры.

4 92

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

success - это обратный вызов, который вызывается при успешном выполнении запроса и является частью $.ajax звонок. done на самом деле является частью