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 !!!!
4 Réponses :
Essayez de mettre ajaxsetup ({async: false}); code> avant votre boucle
Ensuite, après la réinitialisation de la boucle, votre future demande AJAX peut toujours être
async code> p>
Option 1: Passez à l'élément suivant de votre tableau dans le succès code> gestionnaire code>.
Option 2: Faites des demandes AJAX de manière synchrone: p>
global: p>
ou directement dans la demande: p>
SET async code> sur false sur le
$. Ajax code> appel. p>
dans votre $. Ajax code> appelle Ajouter
async: false code> et il enverra une demande de blocage. P>
Peut-être que vous pourriez définir l'attribut
async code> de $ .ajax à
false code>? Voir: API.JQUERY.com/JQUERY.AJAX