どちらを使用すればよいですか?
どちらか一方を使用する理由はありますか?
エラー処理の方が良いですか?
$.ajax({
url: url,
data: { start: start, end: end }
}).done(function(data, textStatus, jqXHR) {
$('#myElement').append(data);
}).fail(function() {
// report error
});
OR
$.ajax({
url: url,
data: { start: start, end: end },
success: function(data, textStatus, jqXHR) {
$('#myElement').append(data);
},
error: function(jqXHR, textStatus, errorThrown) {
// report error
}
});
2つのオプションは同等です。
ただし、promiseスタイルのインターフェイス(.fail()
および.done()
)を使用すると、要求を作成するコードと応答を処理するコードを分離できます。
AJAXリクエストを送信してjqXHRオブジェクトを返す関数を作成し、その関数を他の場所で呼び出してハンドラーを追加できます。
.pipe()
関数と組み合わせると、promiseスタイルのインターフェイスは、複数のAJAX呼び出しを行うときのネストを減らすのにも役立ちます。
$.ajax(...)
.pipe(function() {
return $.ajax(...);
})
.pipe(function() {
return $.ajax(...);
})
.pipe(function() {
return $.ajax(...);
});
これを刷新するために...
成功とエラーのアプローチは、jQuery 1.8で非推奨になりました。
非推奨の通知:jqXHR.success()、jqXHR.error()、およびjqXHR.complete()コールバックは、jQuery 1.8で非推奨になりました。最終的な削除のためにコードを準備するには、代わりにjqXHR.done()、jqXHR.fail()、およびjqXHR.always()を使用します。
chainable deferred object promiseスタイルを使用すると、よりクリーンな構造と always の使用が可能になります。
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');
});