79

どちらを使うべきですか?

どちらか一方を使用する理由はありますか?

エラー処理には1つ優れていますか?

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

3 に答える 3

44

2つのオプションは同等です。

ただし、promiseスタイルのインターフェイス(.fail()および.done())を使用すると、要求を作成するコードを応答を処理するコードから分離できます。

AJAXリクエストを送信してjqXHRオブジェクトを返す関数を作成し、その関数を別の場所で呼び出してハンドラーを追加できます。

関数と組み合わせると.pipe()、promiseスタイルのインターフェースは、複数のAJAX呼び出しを行うときにネストを減らすのにも役立ちます。

$.ajax(...)
    .pipe(function() { 
        return $.ajax(...);
    })
    .pipe(function() { 
        return $.ajax(...);
    })
    .pipe(function() { 
        return $.ajax(...);
    });
于 2012-10-31T22:51:26.863 に答える
33

これをリフレッシュするためだけに...

成功とエラーのアプローチは、jQuery1.8で非推奨になりました。

jQuery Ajax

非推奨の通知:jqXHR.success()、jqXHR.error()、およびjqXHR.complete()コールバックは、jQuery1.8で非推奨になりました。最終的な削除に備えてコードを準備するには、代わりにjqXHR.done()、jqXHR.fail()、およびjqXHR.always()を使用します。

于 2015-02-03T17:34:07.450 に答える
4

連鎖可能な遅延オブジェクト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');
});
于 2018-04-01T13:56:35.883 に答える