2012-01-05 10 views
1

私はページに3つのボタンがあります。 それぞれAJAXをクリックしてリクエストします。特定のケースのAJAXを同期

これらのすべての要求は、非同期モードで行う必要があります。 2回目にいずれかのボタンをクリックする必要があります。 1.初めてこのボタンをクリックして現在のリクエストを停止します。

OR

  1. 何もしません。

オプション#1が優先されます。

私はabort()について知っていますが、私の質問 - Ajaxリクエスト(特定のボタンから)を検出する方法はまだ完了していませんか?ここでの主なポイントは - 特定のボタンからのリクエストです。私はすべてのAjaxリクエストを停止したくありません。私は最初に同じボタンをクリックして作られたリクエストのみを止めたいです。

私のプロジェクトでは、私はjQueryを使用しています これはhttp://api.jquery.com/category/deferred-object/私を助けることができますか?適切な例を提示できますか?あなたはそのプロセスが現在実行されているかどうかを追跡、各可能なAjaxのプロセスに関連付けられた変数を持っている必要があります

おかげ

答えて

1

遅延オブジェクトがあなたの望むことをするとは思いません。彼らは約束をしてコールバックを集約するために設計されています。あなたは$ .ajaxによって返されたjqXHRオブジェクトへの参照を保持することによって、ajax呼び出しの状態を調べることができます。

var ajax; 

function onClick() { 
    if (!ajax || ajax.state() === "resolved") { 
     ajax = $.ajax(url); 
    } 
} 
+0

はい私はreadyStateをチェックして、何をすべきかを決めることができます、あなたは正しいです。 – user1016265

1

。 ajax呼び出しが開始されると、その変数が実行中であることを示すように設定します。そのajax呼び出しが完了したら、プロセスが停止したことを示す変数を設定します。次に、ユーザーがボタンをクリックすると、変数を調べて、ajax呼び出しを中止する必要があるかどうかを判断できます。

+0

上記の回答に似ています。ありがとうございます。 – user1016265

関連する問題