2013-05-21 47 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