2012-01-18 18 views
0

この質問は既に何度か尋ねられていますが、貧弱な実装で解決されています。 、3000PHP ::: 2 AJAX呼び出し::: 2レスポンス:::順序順序で

はsetTimeoutメソッド( "doNext()" のような要求間の遅延のいくつかの並べ替えを使用しMooToolsのか、jQueryのようなライブラリを使用します:

私の意見では貧しいimplimentationは何かをあります);

特に私が達成しようとしているのはこれです。

<div onClick="javascript:one();two();"></div> 

1()及び2()は、AJAX

1()(2の前に来なければならない)

+0

応答が得られた後に内部が2つ呼び出される – Dau

答えて

4

two();one()にAJAXの成功ハンドラで呼び出す必要があります。例えば:

HTML:

<div onClick="javascript:one();"></div> 

のjavascript:

function one() { 
    $.ajax({ 
     ... 
     success: function() { 
      setTimeout(two,3000); 
     } 
    }); 
} 

function two() { 
    $.ajax({ 
     ... 
    }); 
} 
+0

オペレータがjQueryと遅延の両方を避けたい場合、この回答がどのように受け入れられたのか分かりません。 – Imp

3

これを試してみてください!

function one() { 
    $.ajax({ 
     ... 
     aysnc:false, 
    }); 
} 

function two() { 
    $.ajax({ 
     ... 
     aysnc:false, 
    }); 
} 
1

私は、第2の機能が第1の機能内で実行されるべきであることに同意する - 成功した。ここに私のAJAX機能は、他の任意のjqueryのか、必要に応じずに、次のとおりです。

function ajax_call_1(divId, params) 
    { 
     if (window.XMLHttpRequest){ 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else{ 
      // code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     xmlhttp.onreadystatechange=function(){ 
      if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
       if(divId!='') 
        document.getElementById(divId).innerHTML=xmlhttp.responseText; 
       else{ 
        // do something else 
       } 
       ajax_call_2('html_id', 'parameters_to_be_send') 
      } 
     } 
     xmlhttp.open("POST", "script_url", true); //file 
     xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     xmlhttp.setRequestHeader("Content-length", params.length); //length 
     xmlhttp.setRequestHeader("Connection", "close"); 
     xmlhttp.send(params); //parameters 
    } 

そして、第二の機能は同じですが、成功した場合に、関数呼び出しなし:

 function ajax_call_2(divId, params) 
     { 
      if (window.XMLHttpRequest){ 
       // code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp=new XMLHttpRequest(); 
      } 
      else{ 
       // code for IE6, IE5 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 

      xmlhttp.onreadystatechange=function(){ 
       if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
        if(divId!='') 
         document.getElementById(divId).innerHTML=xmlhttp.responseText; 
        else{ 
         // do something else 
        } 
       } 
      } 
      xmlhttp.open("POST", "script_url", true); //file 
      xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
      xmlhttp.setRequestHeader("Content-length", params.length); //length 
      xmlhttp.setRequestHeader("Connection", "close"); 
      xmlhttp.send(params); //parameters 
     } 

ajax_call_1関数の引数は次のとおりです。

divIdは:html要素のID AJAX呼び出しの後に結果を保持する

params:リクエストとともに送信する必要があるパラメータ、つまりID、名前、または送信する必要のあるその他の値。

正直言って、この2つの機能はあまり再利用できません。私はそれをより抽象的にするように変更しているので、同時に2つのAJAX呼び出しごとに使用できるようになりましたが、今はうまく機能しています。

関連する問題