2010-12-16 24 views
0

下記のコードを参照してください 私は既にasync:falseの両方のajaxを設定しています。 doUpdate2ndAJAX()を呼び出す関数が$( "。search")を実行していることを知りました。 doUpdate2ndAJAX()はまだ実行を終了していません。 ( "検索"):短い現在の状況でJQuery複数のAJAXコール

。 1. doUpdate2ndAJAX()、まだ完了していない) 2. doUpdate2ndAJAXを(実行$を実行開始]をクリックし() 3. doUpdate2ndAJAX()終了を実行し、応答バック

は私が 1. doUpdate2ndAJAX() 2. doUpdate2ndAJAXを(実行)としてそれを作ることができる方法を知っている可能性が完了実行し、バック応答 3.コール$()をクリックします( "検索します。");

[系列順に実行]

感謝。 -fsloke

firstCalled: function() { 
      $.ajax({       
      url: "XXX", 
      async: false, 
      success: function(response) { 

         doUpdate2ndAJAX(); 

         $(".search").click(); 

         } 
      }); 
}    

function doUpdate2ndAJAX(){ 
       $.ajax({       
      url: "YYY", 
      async: false, 
      success: function(response) { 
          // UPDATE SOMETHING 
         } 
       }); 
       return false; 
} 
+0

JQuery Deferred Objectは使用しないでください '非同期:false'を。サーバーが応答するまでブラウザーを完全にフリーズします。 – SLaks

+0

はい、SLaksです。私はブラウザをFreezeにしたい。 AJAX呼び出しは可能な限り順番に行われるようにします。 – fsloke

答えて

0

あなたは、AJAXは、非同期呼び出しを行うと、2番目の要求のためにsuccessコールバックで$(".search").click();を呼び出す必要があります。

構造に応じて、doUpdate2ndAJAXにパラメータを追加して、$(".search").click();に電話するかどうかを知らせることができます。
また、コールバックパラメータを追加することもできます。

0

"complete"コールバックを使用して$( "。search").Click()を呼び出すことをお勧めします。あなたがここに成功し、完全なコールバックの違いを見ることができます

http://api.jquery.com/jQuery.ajax/

+0

私の場合、「完了」コールバックは機能しません。 Fabrizioに感謝します。 – fsloke

1

使用繰延オブジェクトを、それらはあなたが解決することができる非同期呼び出しを操作するためのオブジェクトです:

$.when($.ajax("/page1.php"), $.ajax("/page2.php")) 
    .then(myFunc, myFailure); 

myFuncというの後に実行される。この方法2つのajax呼び出しが行われ、いずれかがエラーの場合はmyFailureになります。

あなたはjqueryの公式ドキュメントでそれについての詳細を読むことができます:

関連する問題