2013-05-21 23 views
0

以下是我想要实现的:我在我的数据库中有两个表 - “区域”和“分配器”,都有一个region_id列。我想要的是:引用来自嵌套循环的父循环

1)遍历“地区”表,为每个地区创建一个div与region_id作为div ID,然后附加一个region_name到该div。

2)有一个嵌套的循环,这将通过“分销商”表循环,把所有具有相同REGION_ID分销商,然后从舞台追加到同一div 1.

所以,我想这个代码:

$(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。我的错误在哪里,我该如何解决?

回答

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>"); 
     } 
    }); 
+0

是的,这确实的伎俩!非常感谢你! – Igal