Javascript获取JSON数组

Javascript获取JSON数组,javascript,jquery,ajax,arrays,json,Javascript,Jquery,Ajax,Arrays,Json,我正在尝试通过ajax获取json数组。 my test.php返回: [{"name":"James","age":24},{"name":"Peter","age":30}] 我的Javascript如下所示: var persons=new Array(); $.getJSON("../../api/test.php", function(data){ $.each(data, function(index,value){ pers

我正在尝试通过ajax获取json数组。 my test.php返回:

[{"name":"James","age":24},{"name":"Peter","age":30}]
我的Javascript如下所示:

var persons=new Array();
$.getJSON("../../api/test.php", function(data){
        $.each(data, function(index,value){
                    persons.push(new Person(value.name,value.age));
                });
    });
问题是,当我以后调用persons.length时,我无法读取未定义的属性'length'。 当我将test.php的输出从浏览器复制/粘贴到局部变量时,一切正常:

var content=[{"name":"James","age":24},{"name":"Peter","age":30}];
for(var i=0; i<content.length; i++)
    persons.push(new Person(content[i].name,content[i].age));
var content=[{“name”:“James”,“age”:24},{“name”:“Peter”,“age”:30}];

对于(var i=0;i这可能是作用域的问题。如果在函数中声明了“var persons”,那么它就在函数的作用域中。请仔细检查声明它的位置以及尝试从何处访问它

欲了解更多信息,请参阅:

编辑: 我认为异步调用$.getJSON不会是问题的原因,因为persons.length将是0,persons不会是未定义的

var persons = new Array();
print persons.length; // ==> 0

这可能是作用域的问题。如果在函数中声明了“var persons”,那么它就在函数的作用域中。请仔细检查声明的位置以及尝试访问它的位置

欲了解更多信息,请参阅:

编辑: 我认为异步调用$.getJSON不会是问题的原因,因为persons.length将是0,persons不会是未定义的

var persons = new Array();
print persons.length; // ==> 0

“当我以后调用persons.length时”-我在猜测作用域或异步问题。你能给我们显示更多上下文吗?你什么时候尝试调用
persons.length
$。get
是异步的,所以可能还没有完成。请参阅“”,区别在于
$.get()
是异步的,因此
数据
和由此创建的所有
人员
稍后都可用,当在周围代码继续执行后调用回调时。@JonathanLonowski,这可能是相关的,但是,它没有解释正在发生的错误。错误说明
人员
i未定义,但在他提供的代码中已明确定义。问题已解决!谢谢大家!!非常感谢!!!我有一个方法showResults()修改了我的html,解决方案是在de$内调用它。getJSON()异步问题:D我现在感觉很愚蠢xD“当我以后调用persons.length时”-我在猜测作用域或异步问题。您可以向我们显示更多上下文吗?您何时尝试调用
人员。长度
$。get
是异步的,因此可能尚未完成。请参阅“”,区别在于
$。get()
是异步的,因此
数据
和由此创建的所有
人员
稍后都可用,当在周围代码继续执行后调用回调时。@JonathanLonowski,这可能是相关的,但是,它没有解释正在发生的错误。错误说明
人员
is未定义,但在他提供的代码中已明确定义。问题已解决!谢谢大家!!非常感谢!!!我有一个方法showResults()修改了我的html,解决方案是在de$中调用它。getJSON()异步问题:D我现在觉得很愚蠢xD