each wait until finish $.ajax , and then continue
15,378
Option 1: Switch to next element in your array in the success
handler.
Option 2: Make ajax requests synchronously:
global:
$.ajaxSetup({ async: false });
or directly in the request:
$.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); } } });
Author by
mIRU
Updated on June 11, 2022Comments
-
mIRU about 2 years
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')); });
how is possible to make
$.each
to wait until action$.ajax
will be finished , and then continue loop , i cannot get $this var , because it has the last value , sorry for my English , THANK YOU !!!!