- ベストアンサー
ajax 通信成功時
ajaxで通信成功時のみに、通信終了後に関数を実行したいです。 通信が成功・失敗どちらでも、終了後に実行はcompleteでできますが、 成功時のみは、どのように書けばよいでしょうか? よろしくお願いします。 $.ajax({ type: 'GET', success: function () { 略 }, error:function(){ } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> alwaysの処理は、done(通信成功)やfail(失敗)のどちらでも実行されます。 > これをdone(成功)の時のみに実行したいです。(通信完了時に) > 可能でしょうか? done(成功)の時のみに実行したいのであれば それはalwaysではなくてdoneの方に記述しましょう。 alwaysはいらないと思います。 $.ajax({ url: "test.php" }).done(function(data, status, xhr) { // 通信成功時の処理 // 通信完了時の処理 }).fail(function(xhr, status, error) { // 通信失敗時の処理 });
その他の回答 (1)
- Gotthold
- ベストアンサー率47% (396/832)
$というオブジェクトは組み込みオブジェクトとしては存在しないので、 使っているライブラリを明記してください。 とりあえず、 jQuery.ajax(options) - jQuery 日本語リファレンス http://semooh.jp/jquery/api/ajax/jQuery.ajax/options/ を使っているとします。 質問文中に記載の記述で 成功時には success: function () { 略 }, ここで指定している関数が実行されます。 なので、すでに目的は達成できていると思います。 それとも成功の定義がjQuery.ajaxが定義している成功とは異なるのでしょうか? その場合は、何を持って成功とするのかを明示してください。
お礼
ご回答ありがとうございます。 質問文に不備があり、大変申し訳ありませんでした。 >使っているライブラリ jQueryです。 質問文のコードをjQuery 1.8以降に対応するために変更します。 $.ajax({ url: "test.php" }).done(function(data, status, xhr) { // 通信成功時の処理 }).fail(function(xhr, status, error) { // 通信失敗時の処理 }).always(function(arg1, status, arg2) { // 通信完了時の処理 }); 上記のコードでは、 alwaysの処理は、done(通信成功)やfail(失敗)のどちらでも実行されます。 これをdone(成功)の時のみに実行したいです。(通信完了時に) 可能でしょうか?
お礼
ご回答ありがとうございます。 助かりました。