2016-04-15 7 views
0

ノードjsのオブジェクト内の配列にアクセスする - 未定義? JavaScriptで

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は未定義の – codingIsFun

関連する問題