jquery json填充表

jquery json填充表,jquery,json,Jquery,Json,我试图用jQuery填充一个表,但我被Ajax的非同步性所困扰,不知道如何使用它,以便事情按顺序发生。设置id上有一个主循环。对于每个循环,我都执行一个JSON调用并填充预先创建的表。但是,似乎在JSON完成之前,初始循环就结束了 function getEntityListingsForProvisioning(oArg) { var user_id = oArg.user_id || parseInt(0) //zero gets nothing var entity = o

我试图用jQuery填充一个表,但我被Ajax的非同步性所困扰,不知道如何使用它,以便事情按顺序发生。设置id上有一个主循环。对于每个循环,我都执行一个JSON调用并填充预先创建的表。但是,似乎在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(","); // e.g. ['39', '40']

    $("#" + retDiv).fadeIn('slow').html('');

        // create a table; we'll populate the rows later

    var x = "<table><tr>";
    for(var i=0; i<provIdArray.length; i++) {
        provid = provIdArray[i];
        x += "<td id='td_" + provid + "'>"; 
        x += "<table class='searchPod' border='0' cellspacing='0' cellpadding='2' id='tbl_" + provid + "'>";
        x += "</table></td>";
    }
    x += "</tr></table>";
    $("#" + 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 = "<div class='messageSuccess'><b>No records found!</b><br>Use the left-hand menu to add new records.<br>You can return here any time by clicking the Edit Provisioning link</div>";

            if(res && res.ROWCOUNT > 0)
            {
                for(var k=0; k<res.ROWCOUNT; k++)  
                {                   
                    y += "<tr>"
                    y += "<td style='width:10px' valign='middle'><input type='button' value='Use' class='btnSelProduct' id='" + provisioning_id + "^" + res.DATA.RECORD_ID[k] + "^" + entity + "^" + "'></td>"
                    y += "<td style='width:70px' valign='middle'>"
                    y += "<img id='img_" + res.DATA.RECORD_ID[k] + "' src='http://localhost/chinabuy-new/images/website/users/products/images/" + res.DATA.USER_ID[k] + "/" + res.DATA.RECORD_ID[k] + "/" + res.DATA.IMAGE1[k] + "' width='58' height='40'>&nbsp;&nbsp;&nbsp;" 
                    y += "</td>"
                    y += "<td>"
                    y += "<span class='listingText'>" + res.DATA.PRODUCT_NAME[k] + "</span>&nbsp;&nbsp;&nbsp;"
                    y += "<span class='listingText'>" + res.DATA.MODEL_NUMBER[k] + "</span>"
                    y += "</td></tr>"
                    $("#tbl_" + provisioning_id).html(y);
                }
            }
        })
    }

}
函数getEntityListingsForProvisioning(oArg){
var user_id=oArg.user_id | | parseInt(0)//zero什么也得不到
var实体=oArg.entity | |“产品”;
var provisioning\u id\u list=oArg.provisioning\u id;
var detailLinkClass=oArg.detailLinkClass | |“productDetailLink”
var retDiv=oArg.retDiv | |“divResult”
var provIdArray=provisioning\u id\u list.split(“,”)//例如。['39','40']
$(“#”+retDiv.fadeIn('slow').html(“”);
//创建一个表;稍后我们将填充这些行
var x=“”;
对于(变量i=0;i 0)
{
对于(var k=0;k您需要使用

您可以在中看到回调相关问题的有效解决方案

但你必须从中操纵你的解决方案

我还建议您收集所有需要的ID,然后在您的情况下执行单个ajax请求(如果可能的话)。每个ajax调用都会发出http请求,因此会出现多次延迟。

看看这是否有帮助