3

不得不问很尴尬,但我坦率地承认我是一个没有经验的 Javascript 开发人员,我就是想不通。希望这对其他人来说非常简单,我要提前感谢这里的每一个人,感谢这个网站不断为我提供的帮助。

几天前,我问了这个问题,并且不再收到该错误。但是我在试图实际访问存储在变量中的数据时遇到了困难。我的 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]未定义。

它就在那里,我知道这一切都在那里,但我正忙着搞清楚在哪里。

4

3 回答 3

2

people仅在 ajax 事件发生获取值。

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

于 2013-01-29T17:51:46.880 回答
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.

于 2013-01-29T17:52:33.500 回答
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);
    }
});

以下不应该工作,即peoplewill be undefined,因为 $.getJSON 是一个异步方法,并且此代码试图people在 AJAX 操作完成之前访问。

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

alert("people.length: " + people.length);
if (people.length > 0) {
    alert("people[0].id: " + people[0].id);
}
于 2013-01-29T17:51:40.120 回答