1

json データを取得しようとしていますが$.getJSON、正常に動作しています。これは私のコードです:

$(document).ready(function(){
    var MainArray = new Array();
    $.getJSON('check-location.php?onload=true', function(result) {
        $.each(result, function(i){
            MainArray[i] = result[i].CountryName;
        });
    });

    $(".drop-down").append("<div>" + MainArray[0] + "</div>");
});

後で使用するために配列に割り当てようとしていますが、アクセスして表示しようとするとundefined.

確かにすべてのデータを取得しますが、それをに割り当てるとMainArray、関数の外部にアクセスでき$.eachず、理由がわかりません。

4

3 に答える 3

6

これは、Ajax が非同期であるためです。存在しない値を追加しようとしています。

$.getJSON('check-location.php?onload=true', function(result) {
    $.each(result, function(i){
        MainArray[i] = result[i].CountryName;
    });
    $(".drop-down").append("<div>" + MainArray[0] + "</div>");
});
于 2013-05-22T20:05:22.910 に答える
3

$.getJSONは非同期であるためMainArray、データが正常に返されるまで更新されません。

しかし、ライン

$(".drop-down").append("<div>" + MainArray[0] + "</div>");

が完了する前にすでに実行されてい$.getJSONます...したがって、ですundefined

これをどこかに移動し、データが返されたときに実行する必要があります。コールバックで

于 2013-05-22T20:05:56.813 に答える
0

誰もが言ったように、それは非同期リクエストであるため、オフにすることができます(あまり良い習慣ではありませんが、問題は解決します)

これを $.getJSON 呼び出しの前に追加します

$.ajax({ async: "false" }); 
于 2013-05-22T20:08:29.970 に答える