2016-04-15 64 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