访问节点js中的对象内的对象 - undefined?
在javascript中:访问节点js中的对象内的对象 - undefined?
var post = {};
post.arr = ["hi", "hello"];
$.post("http://localhost:8000/test", post);
和节点:
var body = "";
request.on('data', function (data) {
body += data
});
request.on('end', function (data) {
var post = qs.parse(body);
console.log(post); // I see { 'arr[]': ['hi', 'hello'] };
console.log(post.arr); // undefined
}
任何想法可能是什么造成的?
根据你的意见,它看起来像地图键是从字面上arr[]
。尝试console.log(post['arr[]']);
jQuery将修改数组的名称,正如@MikeC指出的那样。更多的信息在这里:https://stackoverflow.com/a/5888057/1861459
是的,我的工作,但为什么关键的变化? – codingIsFun
我猜'qs'是queryString库?查看更新的答案。 – pherris
data.arr给出undefined – codingIsFun
如果这*完全*你看到的,那么你只是有一个字符串是不是一个有效的对象(不能在JSON中有单引号或分号)。如果它是一个对象,并且你打印的不正确,那么你有一个带有'arr []'键的对象,所以你可以通过'post ['arr []']'来访问它。 –
但为什么关键更改为“arr []”而不是arr? – codingIsFun
因为当jQuery POST一个数组时,它会添加'[]'来表明它是一个数组。许多语言和框架利用它来自动分析数组。 –