jquery json peupler la table

J’essaie d’alimenter une table avec jQuery, mais je suis pris de court par l’asychronisation d’Ajax et je ne sais pas comment le résoudre pour que les choses se passent dans l’ordre. Il y a une boucle principale sur les identifiants de provisioning. Pour chaque boucle, je fais un appel JSON et une population de table pré-créée. Mais il semble que la boucle initiale se soit écasting avant la fin des opérations JSON.

function getEntityListingsForProvisioning(oArg) { var user_id = oArg.user_id || parseInt(0) //zero gets nothing var entity = oArg.entity || "products"; var provisioning_id_list = oArg.provisioning_id; var detailLinkClass = oArg.detailLinkClass || "productDetailLink" var retDiv = oArg.retDiv || "divResult" var provIdArray = provisioning_id_list.split(","); // eg ['39', '40'] $("#" + retDiv).fadeIn('slow').html(''); // create a table; we'll populate the rows later var x = ""; for(var i=0; i<provIdArray.length; i++) { provid = provIdArray[i]; x += ""; } x += "
"; x += ""; x += "
"; $("#" + retDiv).html(x) //loop through provisioning id's and get same list of products for each for(var j=0; j<provIdArray.length; j++) { var y = ''; provisioning_id = provIdArray[j]; // get JSON recordset. PROBLEM. I think this isn't getting finished before the main loop ticks over again. $.getJSON("/cfcs/main.cfc?method=getProductListings&returnformat=json&queryformat=column", {"user_id":user_id,"short":true}, function(res,code) { var v_listing_class = "listingCaption"; var v_object_type = "ajax"; var v_onclick = 'return hs.htmlExpand(this,{objectType:"ajax"})'; var listings_noresults = "
No records found!
Use the left-hand menu to add new records.
You can return here any time by clicking the Edit Provisioning link
"; if(res && res.ROWCOUNT > 0) { for(var k=0; k<res.ROWCOUNT; k++) { y += "" y += "" y += "" y += "   " y += "" y += "" y += "" + res.DATA.PRODUCT_NAME[k] + "   " y += "" + res.DATA.MODEL_NUMBER[k] + "" y += "" $("#tbl_" + provisioning_id).html(y); } } }) } }

Vous devez utiliser le rappel

vous pouvez trouver une solution de travail à un problème lié au rappel dans Comment puis-je obtenir cette fonction pour qu’elle renvoie la valeur extraite à l’aide de jQuery.ajax?

mais vous devrez manipuler votre solution à partir de cela

Je vous recommande également de collecter tous les identifiants de votre choix, puis de faire une seule demande ajax si cela est possible dans votre cas. Chaque appel ajax fait une requête http et par conséquent plusieurs retards.