您好我有以下JSON对象:
[
{
"comments":[
{
"created_at":"2011-02-09T14:42:42-08:00",
"thumb":"xxxxxxx",
"level":1,"id":214,
"user_id":41,
"parent_id":213,
"content":"<p>xxxxxx</p>",
"full_name":"xx K"
},
{
"created_at":"2011-02-09T14:41:23-08:00",
"thumb":"xxxxxxxxxxxxx",
"level":0,
"id":213,
"user_id":19,
"parent_id":null,
"content":"<p>this is another test</p>",
"full_name":"asd asd asd asd asd"
}
],
"eee1":"asdadsdas",
"eee2":"bbbbb"
}
]
这来自$.ajax
请求,我有成功......
success: function (dataJS) {
console.log(dataJS);
console.log(dataJS[eee1]);
console.log(dataJS.comments);
}
问题是我无法访问JSON对象中的项目,即使dataJS确实在控制台中正确显示。想法?
由于
答案 0 :(得分:13)
那是因为你的基础对象也是一个数组。
console.log(dataJS[0].comments[0]);
我怀疑这会起作用
答案 1 :(得分:5)
你回来的JSON实际上是一个数组本身,所以...
dataJS[0].comments[0].created_at
将是2011-02-09T14:42:42-08:00
等等......
dataJS
和comments
都是数组,需要索引才能访问相应的元素。
答案 2 :(得分:3)
返回的对象本身就是一个数组,所以要获得第一个注释(作为示例),这是您访问它的方式:
dataJS[0].comments[0]
答案 3 :(得分:3)
console.log(dataJS);
console.log(dataJS[0].eee1);
console.log(dataJS[0].comments[0]);
答案 4 :(得分:1)
做这样的事情: -
var dataJS = [{"comments":[{"created_at":"2011-02-09T14:42:42-08:00","thumb":"xxxxxxx","level":1,"id":214,"user_id":41,"parent_id":213,"content":"<p>xxxxxx</p>","full_name":"xx K"},{"created_at":"2011-02-09T14:41:23-08:00","thumb":"xxxxxxxxxxxxx","level":0,"id":213,"user_id":19,"parent_id":null,"content":"<p>this is another test</p>","full_name":"asd asd asd asd asd"}],"eee1":"asdadsdas","eee2":"bbbbb"}];
var created_at = dataJS[0].comments[0].created_at;
答案 5 :(得分:1)
是的,正如其他人所说,JSON实际上是一个数组(单个对象)。所以你需要引用一个索引。
有趣的是(对我而言),您的结果字符串确实成功验证为JSON。我一直认为,要成为有效的JSON,它必须是一个Object(即{})。
答案 6 :(得分:0)
您必须将ajax请求中的dataType称为“JSON”。让用户完成下面的操作。
$.ajax({
url: $('#frmAddCourse').attr('action'),
type: 'POST',
data: $('#frmAddCourse').serialize(),
dataType: 'JSON',
success: function (data){
Materialize.toast(data['state'],2000);
},
error:function(){
Materialize.toast(errorMessage,2000);
}
});
答案 7 :(得分:-2)
JSON必须使用eval
函数进行解释(在明显的清理之后,请参阅eval的安全性考虑因素)。你确定你的框架为你做了吗?