【发布时间】:2014-12-19 15:22:27
【问题描述】:
在网页上,我正在使用 jQuery 发布一些 JSON:
$.post('/url', data);
我的数据是一个 javascript 对象,其中包含一些值和一个数组。 JSON.stringify(data) 看起来像:
{"favoriteAnimal":"piglet", "okayAnimals":["cats","dogs"]}
我正在使用 ExpressJS(与 body-parser 中间件连接)在 NodeJS webapp 中使用这个 JSON。我可以检索到最喜欢的动物,例如req.body.favoriteAnimal,它给了我字符串piglet,这一切都很好。
但是如何访问数组中的值呢?
req.body.favoriteAnimal // piglet
req.body.okayAnimals // undefined
req.body.okayAnimals[] // syntax error
这行得通……
req.body['okayAnimals[]']
...但闻起来很腥。如果被 POST 的原始数据在其数组中只包含一个元素(它只返回一个字符串),它也不会返回一个数组。
JSON 的 jQuery 编码或 ExpressJS 中的解码是否有问题阻止我像 req.body.okayAnimals 那样访问它并每次都获取一个数组?
【问题讨论】:
-
hmmm...这听起来根本不对...
req.body.okayAnimals不应该是undefined给定 json 字符串。 -
您确定
data是json(字符串)而不是对象吗?事实上,我很肯定它是一个对象而不是一个字符串,因为这解释了你所看到的行为。如果它是一个对象,它就会变成表单参数:favoriteAnimal=piglet&okayAnimals[]=cats&okayAnimals[]=dogs -
typeof(data)返回一个object所以你是对的,它不是一个字符串
标签: javascript jquery node.js express