在Javascript变量中访问JSON数据

时间:2013-01-29 17:42:03

标签: php javascript jquery json

不得不提出这个问题令人尴尬,但我承认我是一个没有经验的Javascript开发人员,而我无法理解这一点。希望这对其他人来说简单易行,我想提前感谢所有人,以便本网站不断为我提供帮助。

几天前,我问过this question,我不再收到错误了。但我试图实际访问存储在变量中的数据。我的JSON看起来像这样:

[
    {"id":"1","name":"Bob","haircolor":"Brown"},
    {"id":"2","name":"Carol","haircolor":"Red"}
]

它会变成这样的变量:

var people=[];
$.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
    people.push(data);
});

感谢将人初始化为数组,我不再收到任何错误消息。但我也无法访问人们的内容。 people.length返回0,people[0]people[1]未定义。

它就在那里,我知道它就在那里,但我有一个时间搞清楚的地方。

3 个答案:

答案 0 :(得分:2)

people只有在 ajax事件发生后才会获得值

将数据放入people数组后调用一些回调函数。

答案 1 :(得分:1)

试试这个:http://jsfiddle.net/hUq7k/

$.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
    $.each(data, function(i, people){
       console.log(people.id); //<------this should output "1, 2"
    });
});

确保您获得response data

答案 2 :(得分:0)

如果服务器实际上返回了预期的JSON,则以下 应该:

$.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
    var people = data;
    alert("people.length: " + people.length);
    if (people.length > 0) {
        alert("people[0].id: " + people[0].id);
    }
});

以下工作,即people将为undefined,因为$ .getJSON是一个异步方法,此代码正在尝试访问{{1}在AJAX操作完成之前。

people