0
$.getJSON("Index/Locations_By_Ratings",function (data) {
    $('#LocationsContainer').html('');
    for (var i = 0; i < data.length; i++)
    {
        $.getJSON('Index/Get_Board_Type',{id:data[i].board_type},function (board_type) {
            var Board = board_type['board_types'];
        });
        $('#LocationsContainer').append('<div class="LocationBox">\
                                            <div class="left">\
                                            <div class="LocationRow"><b>Board Type</b> : '+Board+'</div>\
                                            <div class="LocationRow"><b>Area</b> : '+data[i].location+'</div>\
                                        </div>');
    }
});

最初の呼び出しで board_types id を取得し、2 番目の呼び出しで最初の呼び出し board_types id を使用してボード タイプ名を取得し、var Board を出力したい。

4

1 に答える 1

0

あなたのコードには 3 つの問題があります。

  • getJSON は非同期です: 直後のコードは、サーバーからの回答を取得する前に実行されます (ボードがまだいっぱいになっていない場合)
  • Board はローカル変数であり、getJSON に指定したコールバックの外では表示されません
  • iコールバックの実行時に値が変更されました (覚えておいてください: getJSON は非同期です)

あなたはこれを行うことができます :

$.getJSON("Index/Locations_By_Ratings",function (data) {
    $('#LocationsContainer').html('');
    for (var i = 0; i < data.length; i++)
    {
        var theData = data[i];
        $.getJSON('Index/Get_Board_Type', {id:theData.board_type},function (board_type) {
            var Board = board_type['board_types'];
            $('#LocationsContainer').append('<div class="LocationBox">\
                                                <div class="left">\
                                                <div class="LocationRow"><b>Board Type</b> : '+Board+'</div>\
                                                <div class="LocationRow"><b>Area</b> : '+theData.location+'</div>\
                                            </div>');
    });}
});
于 2012-08-26T08:20:48.453 に答える