【发布时间】: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