【问题标题】:jQuery.each() and Array ManipulationjQuery.each() 和数组操作
【发布时间】:2016-10-17 18:36:19
【问题描述】:

这是我的代码:

$(document).ready(function() {
    var myArray = [];
    $.getJSON("some url",function(data){
        $.each(data, function(){
            myArray.push("a string" + this);
        });
        alert(myArray);
    });
    //alert(myArray);
});

所示代码运行良好,它显示了数组及其内容。

但是,当我尝试通过在 $.each 代码块(在示例代码中注释掉)之后使用命令行来显示数组时,不会显示数组及其内容。而是返回空/空白消息。

为什么会发生这种情况,我该如何解决?我想在$.each 块之后使用命令“alert(myArray);”。

提前谢谢你!

【问题讨论】:

  • Ajax 是异步的。您必须使用回调内部返回的数据,而不是外部。如果不转到async: false 就无法修复它,但这是一个糟糕的主意。
  • 第二个警报在从服务器获取 json 之前运行,所以它是空的。
  • 这是本网站上最常见的问题之一。请参阅this answer 了解有关您所经历的更多信息。
  • 第一个空白是因为getJson还没有返回所以数组还是清空的。您没有在 getJSON 中看到警报,因为第一个警报阻止了 getJSON 中的警报。

标签: javascript jquery arrays getjson


【解决方案1】:
var myArray = [];
var jqxhr = $.getJSON( "some url", function(data) {
  $.each(data, function(){
     myArray.push("a string" + this);
  });
})  ;

jqxhr.complete(function() {
  console.log(myArray);
});

jQuery XHR 对象或“jqXHR”由 $.getJSON() 返回

当请求已经完成时,立即触发 .complete() 回调。

【讨论】:

  • 请说明您的代码/更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多