函数外部的Javascript数组访问
我正在尝试使用函数外部的Javascript数组访问,javascript,jquery,ajax,arrays,json,Javascript,Jquery,Ajax,Arrays,Json,我正在尝试使用$.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].Country
$.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>");
});
$(文档).ready(函数(){
var MainArray=新数组();
$.getJSON('check-location.php?onload=true',函数(结果){
$。每个(结果、函数(i){
MainArray[i]=结果[i].CountryName;
});
});
$(“.drop-down”).append(“+MainArray[0]+”);
});
我试图将它分配给数组以供以后使用,但当我尝试访问它并显示它时,我得到了未定义的
我确实得到了所有的数据,但当我将其分配给MainArray
时,我无法在$之外访问它。每个函数我都不知道为什么。这是因为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>");
});
$.getJSON('check-location.php?onload=true',函数(结果){
$。每个(结果、函数(i){
MainArray[i]=结果[i].CountryName;
});
$(“.drop-down”).append(“+MainArray[0]+”);
});
这是因为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>");
});
$.getJSON('check-location.php?onload=true',函数(结果){
$。每个(结果、函数(i){
MainArray[i]=结果[i].CountryName;
});
$(“.drop-down”).append(“+MainArray[0]+”);
});
因为$.getJSON
是异步的,所以在成功返回数据之前不会更新MainArray
但是,这条线
$(".drop-down").append("<div>" + MainArray[0] + "</div>");
$(“.drop-down”).append(“+MainArray[0]+”);
将在$.getJSON
完成之前执行…因此它是未定义的
您应该将其移动到某个位置,并在数据返回时执行它,即在回调中,因为$.getJSON
是异步的,所以在成功返回数据之前,MainArray
不会更新
但是,这条线
$(".drop-down").append("<div>" + MainArray[0] + "</div>");
$(“.drop-down”).append(“+MainArray[0]+”);
将在$.getJSON
完成之前执行…因此它是未定义的
您应该将其移动到某个位置,并在数据返回时执行它,例如,在回调中,就像每个人所说的那样,因为这是一个异步请求
您可以将其关闭(这不是一个很好的做法,但它会解决问题)
在$.getJSON调用之前添加此项
$.ajax({ async: "false" });
就像每个人说的,因为这是一个异步请求
您可以将其关闭(这不是一个很好的做法,但它会解决问题)
在$.getJSON调用之前添加此项
$.ajax({ async: "false" });
只是一张纸条。选择[]
而不是new Array()
。请注意。选择[]
而不是new Array()
。谢谢大家的帮助。谢谢大家的帮助。