2011-12-28 8 views
5
function genTask(elem){ 
    elem.each(function(){ 
     $this=$(this).parent('.cntTasks'); 
     var pattern=/taskId-(.*)$/ 
     var idTask=$this.attr('id').match(pattern); 
     var data='id_task='+idTask[1]; 
     if(typeof jsVar2 !='undefined') data+=jsVar2; 
     $.ajax({ 
      type: "POST", 
      url: domain+"/view_tasks/gen_tasks/", 
      dataType: 'html', 
      data: data, 
      success: function(dt){ 
       $this.find('.contChildTasks').html(dt); 
       childs=$this.children('.taskDesc').find('.has_child'); 
       if(childs.length!=0) 
        genTask(childs); 
       } 
      } 
     }); 
     $this.find('.taskDesc').show(); 

    }); 
} 

if(typeof jsVar2 !='undefined') genTask($('.cntTasks .has_child')); 


});  

を続け、私は、このVAR $を取得することはできません私の英語のために申し訳ありません、ありがとうございます!!!!

+0

おそらく、$ .ajaxの 'async'属性を' false'に設定できますか?参照してください:http://api.jquery.com/jQuery.ajax/ – Armin

答えて

14

オプション1:successハンドラの配列の次の要素に切り替えます。

オプション2:同期してくださいAJAXリクエスト:グローバル

  • :リクエストで

    $.ajaxSetup({ async: false }); 
    
  • または直接:

    $.ajax({ 
        async: false, 
        type: "POST", 
        url: domain+"/view_tasks/gen_tasks/", 
        dataType: 'html', 
        data: data, 
        success: function(dt){ 
         $this.find('.contChildTasks').html(dt); 
         childs=$this.children('.taskDesc').find('.has_child'); 
         if(childs.length!=0) 
          genTask(childs); 
         } 
        } 
    }); 
    
+0

ありがとう、それは動作します:) – mIRU

+0

良い..... ..... –

+0

パーフェクト - ありがとう! – yab86

0

try ajaxsetup({asynch:false});あなたの各ループの前に ループの後にそれをtrueに戻して、あなたの将来のajax要求がまだasychになるようにします。

0

にfalseにasyncを設定します。 $.ajaxコール。

0

$.ajaxには、電話番号async: falseが追加され、ブロックリクエストが送信されます。

+1

downvoterは説明できますか? – ridecar2

関連する問題