2016-04-15 65 views
0

在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 
    } 

任何想法可能是什么造成的?

+1

如果这*完全*你看到的,那么你只是有一个字符串是不是一个有效的对象(不能在JSON中有单引号或分号)。如果它是一个对象,并且你打印的不正确,那么你有一个带有'arr []'键的对象,所以你可以通过'post ['arr []']'来访问它。 –

+0

但为什么关键更改为“arr []”而不是arr? – codingIsFun

+1

因为当jQuery POST一个数组时,它会添加'[]'来表明它是一个数组。许多语言和框架利用它来自动分析数组。 –

回答

1

根据你的意见,它看起来像地图键是从字面上arr[]。尝试console.log(post['arr[]']);

jQuery将修改数组的名称,正如@MikeC指出的那样。更多的信息在这里:https://stackoverflow.com/a/5888057/1861459

+0

是的,我的工作,但为什么关键的变化? – codingIsFun

+0

我猜'qs'是queryString库?查看更新的答案。 – pherris

+0

data.arr给出undefined – codingIsFun