1. ホーム
  2. javascript

jQuery ajax() の success, error, complete と .done(), .fail(), always() の比較。

2023-10-18 14:29:16

質問

質問 :

  1. 以下の提案のようにコーディングを変更する必要がありますか?
  2. の間に違いはありますか? .done() &です。 success: , .fail() & error: そして .always() & complete: ?

前文 :

私も過去に成功したことがある、jQuery.ajaxの呼び出しをまとめてました。こんな感じのものです。

    $.ajax(
    {
        url: someUrl,
        type: 'POST',
        data: someData,
        datatype: 'json',
        success: function (data) { someSuccessFunction(data); },
        error: function (jqXHR, textStatus, errorThrown) { someErrorFunction(); }
    });

ドキュメントをざっと見ていたら、「成功、エラー、完了のコールバックは、jQuery 1.8で非推奨になった」という記述を見つけました。最終的な削除に備えるため、代わりにjqXHR.done()、jqXHR.fail()、jqXHR.always()を使ってください。

したがって、私たちは代わりにこのようなコーディングを開始する必要があります。

$.ajax( "example.php" )
    .done(function (data) { someSuccessFunction(data); })
    .fail(function (jqXHR, textStatus, errorThrown) { someErrorFunction(); })
    .always(function() { alert("complete"); });

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

その状況では、そうするメリットはないでしょう。

のポイントは .done() .fail() .always() メソッドは

  1. 複数のハンドラをアタッチする
  2. を呼び出すときだけでなく、どこでもそうすることができます。 $.ajax

もし、あなたが $.ajax のコールサイトで単一のハンドラをアタッチしているだけなら、これらの利点は実際には発揮されません。

つまり、あなたがプロミスを返せば、他の人が独自のハンドラをアタッチすることができるのです。

例として、ajaxリクエストの後にプラグインを更新しています。

$.ajaxPrefilter(function(opt, origOpt, jqxhr) {
    jqxhr.always(function() {
        $("[data-plugin]").plugin();
    });
});