0

这是我想要实现的目标:我的数据库中有 2 个表 - 'regions' 和 'distributors',都有一个 region_id 列。我想要的是:

1) 遍历“区域”表,为每个区域创建一个以 region_id 作为 div id 的 div,然后将 region_name 附加到该 div。

2) 有一个嵌套循环,它将遍历“distributors”表,拉出所有具有相同 region_id 的分销商,然后将其附加到阶段 1 的相同 div 中。

所以我尝试了这段代码:

$(function(){
    $.getJSON("inc/API.php", {command:"get_regions"},
        function(result){
            var div_length = 786/result.length;
            for(var i=0; i<result.length; i++){
                var div_name = "div_region_"+result[i].region_id;
                $("<div id='"+div_name+"' class='div_region' 
                    style='width:"+div_length+"px; float:right;'></div>").appendTo("#content");

                $("<b>"+result[i].region_name+"</b></br>").appendTo("#"+div_name);
                $.getJSON("inc/API.php", {
                    command:"get_distributors", 
                    region_id: result[i].region_id
                },
                function(result){
                    for(var j=0; j<result.length; j++){
                        $("#"+div_name).append(result[j].distributor_name+"</br>");
                    }
                });
            }
     });
});

虽然它创建了 div 并将区域名称附加到它们,但此时分发器名称都附加到最后一个 div。我的错误在哪里,我该如何解决?

4

1 回答 1

1

这是因为循环在 AJAX 函数返回之前已经完成。

将第二个 AJAX 函数更改为:

$.getJSON("inc/API.php", {
        command:"get_distributors", 
        region_id: result[i].region_id
    },
    function(result){
        for(var j=0; j<result.length; j++){
            var id = "#div_region_"+ result[j].region_id; //assuming that's how the data is structured
            $(id).append(result[j].distributor_name+"</br>");
        }
    });
于 2013-05-21T12:53:29.967 回答