我有一个看起来像这样的对象:
editinvite: {
_id: '',
title: '',
codes_list: []
}
问题是我无法访问NodeJS应用中的codes_list。它显示为' undefined' (其他非数组变量工作正常)
router.post('/inviteEdit', function (req, res) {
...
console.log(req.body.codes_list);
// Output:
undefined
注意我尝试使用codes_list
,我的意思是我想将其直接传递给我的更新参数:
var update = {
title: req.body.title,
codes_list: req.body.codes_list,
};
(额外信息) console.log(req.body)
的输出:
{ _id: '565981a16a75a7522afdcc8b',
title: 'as',
'codes_list[0][code]': '0EHC',
'codes_list[0][_id]': '565981a16a75a7522afdcc8c',
'codes_list[0][used]': 'false',
'codes_list[1][code]': 'VDQ2',
'codes_list[1][_id]': '565981a16a75a7522afdcc8d',
'codes_list[1][used]': 'false' }
发送前 (额外信息) editinvite
对象,在FF调试器上看起来像这样:
(额外信息)我的ajax电话:
$.ajax({
type: 'post',
url: this.server + '/inviteEdit',
dataType: 'json',
data: this.editinvite,
crossDomain: true,
success: function (data, status, jqXHR) {
...
(额外信息)我在节点应用中使用这些参数
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
答案 0 :(得分:1)
引自body-parser
文档:
bodyParser.urlencoded(options)
返回仅解析的中间件 urlencoded身体。此解析器仅接受正文的UTF-8编码,并支持gzip和deflate编码的自动膨胀。在主页上填充包含已解析数据的新主体对象 中间件后的请求对象(即
req.body
)。这个对象会 包含键值对,其中值可以是字符串或数组 (当扩展为false时)或任何类型(当扩展为真时)。
所以基本上如果你只想要解析字符串或数组,你可以设置扩展为false,对于其他类型(比如在你的case对象数组中),你需要将它设置为true。