Должен ли я использовать .done() и .fail() для нового кода jQuery AJAX вместо успеха и ошибки
Я закодировал вот так:
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID },
success: function (data) {
$('#CityID').html(data);
},
error: function (ajaxContext) {
alert(ajaxContext.responseText)
}
});
Но когда я смотрю на jQuery .ajax()
документация в конце, кажется, что я должен кодировать, как это ниже или по крайней мере он предлагает добавить .done()
и a .fail()
:
var request = $.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
});
request.done(function (data) {
xxx;
});
request.fail(function (jqXHR, textStatus) {
xxx;
});
Обновление
Если я код, как это, это то же самое или есть ли какое-то преимущество, чтобы разбить его на три?
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
}).done(function (data) {
xxx;
}).fail(function (jqXHR, textStatus) {
xxx;
});
Ответы
Ответ 1
Как указано пользователем2246674, использование success
и error
в качестве параметра функции ajax действительно.
Чтобы соответствовать прецедентному ответу, прочитайте документ:
Уведомление об отставке:
Обратные вызовы jqXHR.success(), jqXHR.error() и jqXHR.complete() будут устаревать в jQuery 1.8. Чтобы подготовить код для их возможного удаления, используйте вместо него jqXHR.done(), jqXHR.fail() и jqXHR.always().
Если вы используете функцию обратного вызова (используя, например, метод-цепочку), используйте .done()
, .fail()
и .always()
вместо success()
, error()
и complete()
.
Ответ 2
Я хочу добавить что-то на пост @Michael Laffargue:
jqXHR.done()
быстрее!
jqXHR.success()
имеют некоторое время загрузки в обратном вызове и иногда могут превышать script. Я нахожу это раньше.
UPDATE:
Используя jqXHR.done()
, jqXHR.fail()
и jqXHR.always()
, вы можете лучше манипулировать с помощью ajax-запроса. В общем случае вы можете определить ajax в некоторой переменной или объекте и использовать эту переменную или объект в любой части вашего кода и быстрее получать данные. Хороший пример:
/* Initialize some your AJAX function */
function call_ajax(attr){
var settings=$.extend({
call : 'users',
option : 'list'
}, attr );
return $.ajax({
type: "POST",
url: "//exapmple.com//ajax.php",
data: settings,
cache : false
});
}
/* .... Somewhere in your code ..... */
call_ajax({
/* ... */
id : 10,
option : 'edit_user'
change : {
name : 'John Doe'
}
/* ... */
}).done(function(data){
/* DO SOMETHING AWESOME */
});
Ответ 3
Простыми словами
$.ajax("info.txt").done(function(data) {
alert(data);
}).fail(function(data){
alert("Try again champ!");
});
если он получит info.text, тогда он будет предупреждать и любую функцию, которую вы добавляете, или если какой-либо способ не может получить информацию .text с сервера, а затем функцию предупреждения или ошибки.