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