4

我对 javascript 和 jquery 开发相当陌生。我有一个值表,我在 PHP 中获取并格式化为 JSON 字符串,因为 JSON 看起来是一种将数据导入 javascript 的好方法。但是我在处理 javascript 变量时遇到了麻烦。

JSON 数据的格式非常简单。它看起来像这样:

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

等等。没有一个条目是复杂的。它只是扁平的数据行。

我使用来自 JQuery 的 $.getJSON() 将数据放在一个变量中,如下所示:

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

根据 console.log(data),对象“数据”正在填充我的 JSON 字符串的内容。但是推送在 javascript 控制台中生成了这些错误:

Uncaught TypeError: Cannot read property 'length' of undefined
Uncaught TypeError: Cannot call method 'push' of undefined

我错过了什么?您还需要其他信息来帮助我吗?由于这个问题,我已经停止了这个项目,而且我只是一个 javascript 新手,无法弄清楚。

4

5 回答 5

3

变量 people 必须是一个数组。将第一行更改为

var people = [];

目前“人”只是未定义的, .push() 方法仅适用于数组。

于 2013-01-26T15:00:30.030 回答
2

如果您的 PHP 像这样编写输出:

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

您需要将整个结构分配给people

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

// note that you can't access anything inside people here
// only when the json has been processed
于 2013-01-26T15:10:27.513 回答
1

在推送之前尝试将变量定义为数组:

var people = new Array();
于 2013-01-26T14:58:28.340 回答
1

尝试将 people 变量初始化为数组

var people = []
于 2013-01-26T15:00:33.737 回答
1

你可以试试这个:

$.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
  $.each(data, function(i, people){
     console.log(people);
  });
});    
于 2013-01-26T16:09:42.027 回答