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 回答