1. ホーム
  2. jquery

jquery ajaxの呼び出し - .fail vs. :error

2023-08-02 04:32:16

質問

どれを使えばいいのでしょうか?

どちらか一方を使うべき理由はありますか?

エラー処理にはどちらがよいのでしょうか?

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

どのように解決するのですか?

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

しかし,プロミス形式のインタフェース( .fail().done() ) を使うことで、リクエストを作成するコードとレスポンスを処理するコードとを分離することができます。

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

と組み合わせると .pipe() 関数と組み合わせると、プロミススタイルのインターフェースは、複数のAJAXコールを行う際に入れ子を減らすのにも役立ちます。

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