Вызов jquery ajax -.fail vs.: error

Какой я должен использовать?

Есть ли причина использовать один, а не другой?

Лучше для обработки ошибок?

$.ajax({
    url: url,
    data: { start: start, end: end }
}).done(function(data, textStatus, jqXHR) {
    $('#myElement').append(data);
}).fail(function() {
    // report error    
});

ИЛИ

$.ajax({
    url: url,
    data: { start: start, end: end },
    success: function(data, textStatus, jqXHR) {
        $('#myElement').append(data);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        // report error
    }
});

Ответ 1

Два варианта эквивалентны.

Однако интерфейс интерфейса в стиле обещания (.fail() и .done()) позволяет отделить код, создающий запрос от кода, обрабатывающего ответ.

Вы можете написать функцию, которая отправляет запрос AJAX и возвращает объект jqXHR, а затем вызывает эту функцию в другом месте и добавляет обработчик.

В сочетании с функцией .pipe() интерфейс в стиле обещания также может помочь уменьшить вложенность при совершении нескольких вызовов AJAX:

$.ajax(...)
    .pipe(function() { 
        return $.ajax(...);
    })
    .pipe(function() { 
        return $.ajax(...);
    })
    .pipe(function() { 
        return $.ajax(...);
    });

Ответ 2

Просто чтобы освежить это...

Подход к успеху и ошибкам устарел от jQuery 1.8.

jQuery Ajax

Уведомление об изъятии: обратные вызовы jqXHR.success(), jqXHR.error() и jqXHR.complete() устаревают с jQuery 1.8. Чтобы подготовить код для их возможного удаления, используйте вместо него jqXHR.done(), jqXHR.fail() и jqXHR.always().