2014-12-07 94 views
1

我想在控制台中输出一些JSON对象,但它似乎不工作。这个JSON来自我使用PHP创建的迷你API。阅读JSON数组与jQuery

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

然而,正在返回任何和我在控制台日志如下:

遗漏的类型错误:无法读取未定义的属性'TotalResults'

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

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

+2

执行一个console.log,它返回'data' ...有时它看起来不像我们期望的。这可能会为您提供前进的信息。 – rfornal 2014-12-07 17:26:22

+0

把'console.log(data);'和'console.log(text);'返回的是什么? – Riad 2014-12-07 17:29:29

回答

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/

+0

完美!它的工作,非常感谢! 抱歉的错误:var count = data [i] .TotalResults它应该是var count = data.TotalResults – AlexisP 2014-12-07 17:37:41

0

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

你应该阅读data对象像一个正常/本地JavaScript/JSON对象:

在你成功的回调函数:

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 p roperty,因为你可以像原生的Javascript数组一样获得数组长度:data.Results.length

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