好的。在尝试了大约一个小时的不同方法后,我的菜鸟占了上风(这个问题将证明这一点)。
我有一个 JSON 对象,如下所示:
{
newEvent: {
Event: {
name: "Something",
timestamp: {
month: "07",
day: "27",
year: "2013",
hour: "07",
min: "42",
meridian: "pm"
},
duration: "2",
durationMeasure: "min"
}
},
msg: "Event Added"
}
它在一个 jquery ajax 完整回调函数中返回,所以它位于一个名为 data
的参数中。
使用 Chrome,我可以 console.log()
data
,data.newEvent
,data.msg
,data['newEvent']
,和 data['msg']
。唯一返回除未定义之外的任何内容的是 data
(打印上面的内容)
我的问题:在世界上,我如何获取data
中的任何内容?!任何对 JavaScript noob 的见解都将不胜感激! =)
编辑: 一段代码:
function eventAdditionalFinish(data,textStatus) {
console.log("data: ",data,"\n");
console.log("data['newEvent']: ",data['newEvent'],"\n");
console.log("data['msg']: ",data['msg'],"\n");
console.log("data.newEvent: ",data.newEvent,"\n");
console.log("data.msg: ",data.msg,"\n");
}
Chrome 控制台的输出:
data: {"newEvent":{"Event":{"name":"Something","timestamp":{"month":"07","day":"27","year":"2013","hour":"07","min":"42","meridian":"pm"},"duration":"2","durationMeasure":"min"}},"msg":"Event Added"}
data['newEvent']: undefined
data['msg']: undefined
data.newEvent: undefined
data.msg: undefined
最佳答案
好的,
如果您使用 jQuery 的 json()
函数代替 ajax()
,它会将响应解析为 json 对象。
但是,如果您正在使用常用函数并将结果作为名为 data
的字符串,那么您需要类似这样的东西将其转换为对象...
response = JSON.parse(data);
然后你可以做...
response.newEvent.blah;
如你所料。
请注意,您的示例实际上不是有效的 json。属性名称应该被引用...
{
"newEvent": {
"Event": {
"name": "Something",
"timestamp": {
"month": "07",
...
正如其他人所指出的,您还可以告诉 ajax()
为您将结果转换为一个对象(就像您调用 json()
) 通过指定数据类型...
$.ajax({
...
dataType: 'json',
success: function(data) {
alert(data.newEvent.Event.name);
}
});
关于javascript - 访问多维对象 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903676/