【问题标题】:Javascript array access outside functionJavascript数组访问外部函数
【发布时间】:2013-05-22 20:03:13
【问题描述】:

我正在尝试使用 $.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 函数之外访问它,我不知道为什么。

【问题讨论】:

  • 只是一个注释。去[]而不是new Array()

标签: javascript jquery ajax arrays json


【解决方案1】:

那是因为 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>");
});

【讨论】:

    【解决方案2】:

    因为$.getJSON 是异步的,所以MainArray 在数据成功返回之前不会更新。

    但是,这条线

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

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

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

    【讨论】:

      【解决方案3】:

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

      在 $.getJSON 调用之前添加它

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

      【讨论】:

      • 谢谢大家的帮助。
      猜你喜欢
      • 1970-01-01
      • 2017-04-11
      • 2017-06-01
      • 2021-01-04
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      相关资源
      最近更新 更多