jQuery ajax() の success, error, complete と .done(), .fail(), always() の比較。
2023-10-18 14:29:16
質問
質問 :
- 以下の提案のようにコーディングを変更する必要がありますか?
-
の間に違いはありますか?
.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()
メソッドは
- 複数のハンドラをアタッチする
-
を呼び出すときだけでなく、どこでもそうすることができます。
$.ajax
もし、あなたが
$.ajax
のコールサイトで単一のハンドラをアタッチしているだけなら、これらの利点は実際には発揮されません。
つまり、あなたがプロミスを返せば、他の人が独自のハンドラをアタッチすることができるのです。
例として、ajaxリクエストの後にプラグインを更新しています。
$.ajaxPrefilter(function(opt, origOpt, jqxhr) {
jqxhr.always(function() {
$("[data-plugin]").plugin();
});
});
関連
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] Ajaxリクエストが200 OKを返すが、successではなくerrorイベントが発生する
-
[解決済み] jQuery の Ajax リクエストがすべて終了するまで待ちますか?
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?