这就是我想要实现的目标:我的数据库中有两个表 - “区域”和“分销商”,两者都有一个region_id列。我想要的是:
1)遍历'regions'表,为每个区域创建一个div,其region_id为div id,然后将region_name附加到该div。
2)有一个嵌套循环,它将遍历'分销商'表,拉出所有具有相同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。这里的错误在哪里,我该如何解决?
答案 0 :(得分: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>");
}
});