确定。经过大约一个小时的尝试,想到不同的方法来做到这一点,我的高通是普遍的(这个问题将证明这一点)。
我有一个看起来像这样的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菜鸟的见解都将不胜感激! =)
编辑: 代码段:
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
答案 0 :(得分:1)
确定,
如果使用jQuery的json()
函数代替ajax()
,它会将响应解析为json对象。
但是,如果您正在使用stock函数并将结果作为名为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);
}
});
答案 1 :(得分:1)
我想这是因为你从服务器收到一个字符串。所以有两个选择:
dataType: 'json'
。JSON.parse(data)
答案 2 :(得分:0)
以下表示法应该有效,只是用类似的例子进行测试
$.ajax({
url: 'yoururl',
success: function(data) {
alert(data.newEvent.Event.name);
},
async: false
});
在这种情况下,您将获得的数据变量是具有属性的对象。要访问属性write:ObjectsName.attributeName
如果有属性也是包含属性的对象,则可以访问这些属性,如:ObjectsName.attributeName1.attrubteName2(其中attribute1也是包含属性的对象)
如果我错了,请纠正我,我也是javascript / jquery-ajax的新手,但我昨天遇到了同样的问题:)