Javascript数组访问外部函数

时间:2013-05-22 20:03:14

标签: javascript jquery ajax arrays json

我正在尝试使用$.getJSON获取json数据并且它正常工作。 这是我的代码:

$(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函数之外访问它,我不知道为什么。

3 个答案:

答案 0 :(得分: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>");
});

答案 1 :(得分:3)

由于$.getJSON是异步的,因此在成功返回数据之前不会更新MainArray

但是,行

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

将在$.getJSON完成之前执行...因此它是undefined

你应该将它移动到某个地方并在数据返回时执行它,即。在回调中

答案 2 :(得分:0)

像每个人说的那样,因为它是一个异步请求 你可以关闭它(不是一个很好的练习,但它会解决问题)

在$ .getJSON调用之前添加此内容

$.ajax({ async: "false" });