我正在尝试在控制台中输出一些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中。
答案 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对象。