Вызов 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 ответа:
эти два варианта эквивалентны.
тем не менее, интерфейс promise-style (
.fail()
и.done()
) позволяет отделить код, создающий запрос, от кода, обрабатывающего ответ.вы можете написать функцию, которая отправляет AJAX-запрос и возвращает объект jqXHR, а затем вызвать эту функцию в другом месте и добавить обработчик.
в сочетании с
.pipe()
функция, интерфейс обещани-типа может также помочь уменьшить вложенность делая несколько AJAX-вызовы:$.ajax(...) .pipe(function() { return $.ajax(...); }) .pipe(function() { return $.ajax(...); }) .pipe(function() { return $.ajax(...); });
просто, чтобы освежить все это...
подход успеха и ошибки был устаревшим с jQuery 1.8.
уведомление об устаревании: 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'); });