Вызов jquery ajax -.не против:ошибка


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

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

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

$.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
    }
});
3 64

3 ответа:

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

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

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

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

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

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

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

jQuery Ajax

уведомление об устаревании: jqXHR.успех(), jqXHR.ошибка(), и jqXHR.полные () обратные вызовы устарели с jQuery 1.8. Чтобы подготовить код для их последующего удаления, используйте jqXHR.сделать(), jqXHR.fail (), и jqXHR.всегда() вместо этого.

С помощью chainable отложенный объект стиль посыла учитывает более чистую структуру и пользу всегда.

let data = {"key":"value"}

$.ajax({
    type: 'PUT',
    url: 'http://example.com/api',
    contentType: 'application/json',
    data: JSON.stringify(data), 
}).done(function () {
    console.log('SUCCESS');
}).fail(function (msg) {
    console.log('FAIL');
}).always(function (msg) {
    console.log('ALWAYS');
});