0

これが私が達成しようとしていることです: 私は自分のデータベースに 2 つのテーブルを持っています - 「地域」と「ディストリビューター」、どちらにも region_id 列があります。私が欲しいのは、次のことです:

1) 'regions' テーブルを反復処理し、リージョンごとに、region_id を div id として div を作成し、その div に region_name を追加します。

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 に追加されます。ここで私の間違いはどこにあり、どうすれば修正できますか?

4

1 に答える 1

1

これは、AJAX 関数が戻る前にループが既に完了しているためです。

2 番目の 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 に答える