【问题标题】:Accessing JSON data in a Javascript variable访问 Javascript 变量中的 JSON 数据
【发布时间】:2013-01-29 17:42:02
【问题描述】:

不得不问很尴尬,但我坦率地承认我是一个没有经验的 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] 未定义。

它就在那里,我知道它就在那里,但我正忙着弄清楚在哪里。

【问题讨论】:

标签: php javascript jquery json


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    试试这个: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

    【讨论】:

    • 就是这样!它也很简单。一开始我就不好意思问了。非常感谢!
    • 它工作得很好,也给了我一些关于更容易调试的想法。我最近才了解 console.log(),它有很多非常棒的用途。
    【解决方案3】:

    如果服务器实际上返回了预期的 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 是一个异步方法并且此代码试图在AJAX 操作之前访问people完成。

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多