【问题标题】:JSON to JQuery: What am I doing wrong?JSON 到 JQuery:我做错了什么?
【发布时间】:2013-01-27 00:09:42
【问题描述】:

我对 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 新手,无法弄清楚。

【问题讨论】:

    标签: javascript jquery getjson


    【解决方案1】:

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

    var people = [];
    

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

    【讨论】:

    • 这确实消除了错误,但由于某种原因,people.length 又归零了。不应该每个条目都可以通过 people[0]、people[1] 等处的每个数组寻址吗?还是我误解了 .push() 的工作方式?
    【解决方案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
    

    【讨论】:

    • 我错过了显而易见的事情。 +1 给你,并删除我的答案。
    【解决方案3】:

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

    var people = new Array();
    

    【讨论】:

      【解决方案4】:

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

      var people = []
      

      【讨论】:

        【解决方案5】:

        你可以试试这个:

        $.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
          $.each(data, function(i, people){
             console.log(people);
          });
        });    
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-28
          • 2011-06-01
          • 1970-01-01
          • 2017-12-14
          • 2017-09-29
          • 1970-01-01
          • 1970-01-01
          • 2017-09-10
          相关资源
          最近更新 更多