使用jQuery读取JSON数组

时间:2014-12-07 17:21:48

标签: javascript jquery json

我正在尝试在控制台中输出一些JSON对象,但它似乎不起作用。这个JSON来自我使用PHP创建的迷你API。

我的JSON看起来像这样:

{
    TotalResults: 2,
    Results: [
        {
            UserName: "Sarah",
            ModifDate: "2014-12-01T08:03:40.000+00:00",
            ID: "54321",
            Title: "Brilliant",
            RText: "This is a brilliant product"
        },
        {
            UserName: "Joe",
            LastModificationTime: "2014-11-01T08:03:40.000+00:00",
            Id: "12345",
            Title: "Excellent",
            RText: "This is a great console,"
        }
    ]
}

我的Javascript:

$.ajax({
    url:'http://myapi.com?api=1&test=test',
    dataType: 'json',
    type: 'get',
    cache: false,
    success:function(data){
        for (var i in data) {
        var count = data[i].TotalResults;
        var name = data[i].Results.UserName;
        var text = data[i].Results.RText;
        console.log(name);
        console.log(text);
        }
    }
}); 

但是,没有返回任何内容,我在控制台日志中得到以下内容:

未捕获的TypeError:无法读取属性' TotalResults'未定义的

你们有更简单的方法来读取数组中的JSON数据吗?

我最终希望将这些数据作为HTML输出到DOM中。

2 个答案:

答案 0 :(得分:3)

$.ajax({
    url:'http://myapi.com?api=1&test=test',
    dataType: 'json',
    type: 'get',
    cache: false,
    success:function(data){
        for (var i in data.Results) {
        var count = data.TotalResults;
        var name = data.Results[i].UserName;
        var text = data.Results[i].RText;
        console.log(name);
        console.log(text);
        }
    }
});

你的迭代有点狡猾,现在应该可以了。

这是一个显示它有效的JSFiddle:http://jsfiddle.net/n7afxhed/

答案 1 :(得分:0)

您阅读JSON响应的方式是错误的

您应该像普通/本机Javascript / JSON对象一样阅读data对象:

在你成功的回调函数中:

function(data) {
//data.Results is the array , we fetch it using the forEach Javascript function, you can use for also...
data.Results.forEach(function(result) {
    console.log(result.UserName)
    ...
})}

您甚至不需要发送TotalResult属性,因为您可以像本机Javascript数组一样获取数组长度:data.Results.length

因此,在其他世界中,当您正在阅读JSON数据时,请将其读作简单的Javascript对象。