• ベストアンサー

ajax 通信成功時

ajaxで通信成功時のみに、通信終了後に関数を実行したいです。 通信が成功・失敗どちらでも、終了後に実行はcompleteでできますが、 成功時のみは、どのように書けばよいでしょうか? よろしくお願いします。 $.ajax({ type: 'GET', success: function () { 略 }, error:function(){ } }

質問者が選んだベストアンサー

  • ベストアンサー
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

> alwaysの処理は、done(通信成功)やfail(失敗)のどちらでも実行されます。 > これをdone(成功)の時のみに実行したいです。(通信完了時に) > 可能でしょうか? done(成功)の時のみに実行したいのであれば それはalwaysではなくてdoneの方に記述しましょう。 alwaysはいらないと思います。 $.ajax({ url: "test.php" }).done(function(data, status, xhr) { // 通信成功時の処理 // 通信完了時の処理 }).fail(function(xhr, status, error) { // 通信失敗時の処理 });

hp_win7
質問者

お礼

ご回答ありがとうございます。 助かりました。

その他の回答 (1)

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

$というオブジェクトは組み込みオブジェクトとしては存在しないので、 使っているライブラリを明記してください。 とりあえず、 jQuery.ajax(options) - jQuery 日本語リファレンス http://semooh.jp/jquery/api/ajax/jQuery.ajax/options/ を使っているとします。 質問文中に記載の記述で 成功時には  success: function () {  略  }, ここで指定している関数が実行されます。 なので、すでに目的は達成できていると思います。 それとも成功の定義がjQuery.ajaxが定義している成功とは異なるのでしょうか? その場合は、何を持って成功とするのかを明示してください。

hp_win7
質問者

お礼

ご回答ありがとうございます。 質問文に不備があり、大変申し訳ありませんでした。 >使っているライブラリ 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(成功)の時のみに実行したいです。(通信完了時に) 可能でしょうか?

関連するQ&A