JQuery ajax() с успехом, ошибкой и полным vs .done(),.fail() и always()
Вопросы:
- Должны ли мы изменить наше кодирование, как предложено ниже?
- Есть ли разница между
.done()
и success:
, .fail()
и error:
и .always()
и complete:
?
Преамбула:
Я собирал вызов jQuery.ajax, который я успешно сделал и в прошлом. Что-то вроде этого:
$.ajax(
{
url: someUrl,
type: 'POST',
data: someData,
datatype: 'json',
success: function (data) { someSuccessFunction(data); },
error: function (jqXHR, textStatus, errorThrown) { someErrorFunction(); }
});
Внимательно просмотрев некоторую документацию, я наткнулся на ссылку, в которой утверждается, что успешные, ошибочные и полные обратные вызовы устарели от jQuery 1.8. Чтобы подготовить код для их возможного удаления, используйте вместо него jqXHR.done(), jqXHR.fail() и jqXHR.always().
Поэтому мы должны начать кодирование чего-то вроде этого:
$.ajax( "example.php" )
.done(function (data) { someSuccessFunction(data); })
.fail(function (jqXHR, textStatus, errorThrown) { someErrorFunction(); })
.always(function() { alert("complete"); });
Ответы
Ответ 1
Хорошо, что в этой конкретной ситуации нет преимущества.
Точка методов .done()
.fail()
.always()
заключается в том, что вы можете
- Прикрепить несколько обработчиков
- Делайте это везде, а не только при вызове
$.ajax
Если вы находитесь на веб-узле $.ajax
, где есть только отдельные обработчики, то эти преимущества действительно не вступают в игру.
Итак, вы можете вернуть обещание, а другие могут присоединить своих обработчиков.
Пример обновления плагинов после запроса ajax:
$.ajaxPrefilter(function(opt, origOpt, jqxhr) {
jqxhr.always(function() {
$("[data-plugin]").plugin();
});
});