【发布时间】:2016-03-08 15:25:13
【问题描述】:
点表示法允许使用 '.' 访问对象无法弄清楚为什么会这样。作为 jQuery $.ajax 函数的一部分,我有以下成功函数。
success: function(data){
console.log('data = ' + data);
console.log('data.president = ' + data.president);
console.log('data.adviser = ' + data.adviser);
}
奇怪的是,这会导致以下浏览器日志:
data = {"president":1,"adviser":1}
data.president = undefined
data.adviser = undefined
我一定错过了一些非常明显的东西。有人可以启发我吗?
【问题讨论】:
-
我建议在
console.log中使用逗号而不是字符串连接。比如看console.log('data = ' + {})和console.log('data = ', {})的区别 -
data是一个字符串。关键是控制台省略了 " 在它的边缘,使它类似于一个对象,但事实并非如此。它是对象的 JSON 序列化。尝试将 dataType: 'json' 添加到 ajax 请求以将其转换自动到js对象。 -
@Stryner 很有趣。你能详细说明为什么逗号更可取吗?我跑了:连接返回
data = [object Object],逗号返回data = Object {} -
逗号更可取,因为它们保留了正在记录的对象的类型。使用字符串连接,所有对象都将更改为
[object Type],从而减少了信息量。在我使用的控制台(Firefox 的 Firebug)中,我能够检查记录的对象;我不确定这是否普遍。 -
@Stryner 非常有帮助,感谢您提供的信息。谢谢!!
标签: javascript jquery ajax syntax