Может кто-нибудь помочь мне?
Я не в состоянии понять разницу между success
и .done()
из $.ajax
.
Если можно, приведите примеры.
jquery
jquery-deferred
Пунам Бхатт
источник
источник
Ответы:
Короче говоря, отделение функции обратного вызова успеха от функции ajax, чтобы позже вы могли добавлять свои собственные обработчики, не изменяя исходный код (шаблон наблюдателя).
Более подробную информацию можно найти здесь: https://stackoverflow.com/a/14754681/1049184
источник
success:
использованием в качестве параметра и.success()
метода в файлеjqXHR
. Последний устарел, но первый - это то, о чем спрашивал OP.success
срабатывает только в случае успешного вызова AJAX, то есть в конечном итоге возвращает статус HTTP 200.error
срабатывает в случае сбоя иcomplete
завершения запроса, независимо от успеха.В jQuery 1.8
jqXHR
объект (возвращенный$.ajax
)success
был заменен наdone
,error
сfail
иcomplete
сalways
.Однако вы все равно сможете инициализировать запрос AJAX с использованием старого синтаксиса. Итак, они делают похожие вещи:
Это изменение сделано для совместимости с отложенным объектом jQuery 1.5 . Отложенные (и теперь
Promise
с полной поддержкой встроенного браузера в Chrome и FX) позволяют связывать асинхронные действия:Эту цепочку функций легче поддерживать, чем вложенную пирамиду обратных вызовов, с которой вы получаете
success
.Однако обратите внимание, что
done
теперь это не рекомендуется в пользуPromise
синтаксиса, которыйthen
вместо этого использует :Это стоит принимающий потому
async
иawait
расширить обещает улучшенный синтаксис (и обработку ошибок):источник
success
, в jQuery 1.8 он был заменен наdone
. Они работают одинаково, ноdone
больше соответствуют остальной части jQuery..done
Был ранний (а теперь тупиковый) удар jQuery в то, что сталоPromise
и теперь имеет довольно полную языковую поддержку. В новых проектах я бы использовалconst response = await fetch(...)
вместо этого..success()
вызывается только в том случае, если ваш веб-сервер отвечает HTTP-заголовком 200 OK - в основном, когда все в порядке.Обратные вызовы, прикрепленные к done (), будут запущены, когда отложенный вызов будет разрешен. Обратные вызовы, прикрепленные к fail (), будут запущены, когда отложенный вызов будет отклонен.
источник
success
- это обратный вызов, который вызывается при успешном выполнении запроса и является частью$.ajax
вызова.done
фактически является частьюjqXHR
объекта, возвращаемого$.ajax()
и заменяющегоsuccess
в jQuery 1.8.источник