Javascript获取JSON数组

时间:2014-01-31 19:07:03

标签: javascript jquery ajax arrays json

我正在尝试通过ajax获取json数组。 我的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时,我得到了无法读取未定义的属性'长度'。 当我将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));

我做错了什么?

1 个答案:

答案 0 :(得分:6)

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

如需进一步阅读,请参阅:http://coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/

编辑: 我不相信异步调用$ .getJSON会导致问题,因为persons.length将为0,并且人们不会被定义。

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