javascript - Consuming JSON with an array in ExpressJS -
on webpage posting json using jquery:
$.post('/url', data);
my info javascript object contains values , array. json.stringify(data)
looks like:
{"favoriteanimal":"piglet", "okayanimals":["cats","dogs"]}
i'm consuming json in nodejs webapp using expressjs (which wired body-parser middleware). can retrieve favorite animal req.body.favoriteanimal
, gives me string piglet
fine , dandy.
but how access values in array?
req.body.favoriteanimal // piglet req.body.okayanimals // undefined req.body.okayanimals[] // syntax error
this works...
req.body['okayanimals[]']
...but smells fishy. won't homecoming array if original info beingness posted contains 1 element in array (it returns single string).
is there going on the jquery encoding of json or going on decoding in expressjs that's preventing me accessing req.body.okayanimals
, getting array every time?
kevin's reply got me there.
$.post('/url', json.stringify(data))
send string 1 step closer. unfortunately jquery's $.post
sets wrong header
content-type:application/x-www-form-urlencoded; charset=utf-8
which expressjs's body-parser not handle appropriately. end with
req.body={"{\"favoriteanimal\":\"piglet\",\"okayanimals\":[\"cats\",\"dogs\"]}":""}
i rewrote how sending data.
$.ajax({ url: '/url', type: 'post', data: data, contenttype: 'application/json; charset=utf-8', datatype: 'json' })
i saw browser sending right headers
content-type:application/json; charset=utf-8
and observed
req.body={"favoriteanimal":"piglet","okayanimals":["cats","dogs"]}
javascript jquery node.js express
No comments:
Post a Comment