如何通过HTML表单提交包含多层嵌套对象结构的req.body参数
问题解答:Node.js表单提交嵌套结构参数的实现
可以实现二级嵌套对象的参数接收,但你写的content[main[element]]语法不对,正确的嵌套写法是每一级属性单独用方括号包裹,格式为content[main][element]。
注意:需要确保你的Node.js服务端解析表单数据的中间件(express自带的
express.urlencoded或者独立的body-parser包)开启了extended: true配置,这是默认支持嵌套对象解析的前提,示例配置如下:
// express 4.16+ 内置中间件配置示例 app.use(express.urlencoded({ extended: true }))
正确的表单代码写法如下:
<form action="/d/<%=project._id%>?_method=PUT" method="POST"> <input class="part" name="content[main][element]"> </form>
提交后服务端拿到的req.body就是你需要的结构:
{ content: { main: { element: '用户输入的内容' } } }
- 该写法还支持更深层级的嵌套,比如
content[main][element][detail]就会生成三级嵌套对象 - 如果需要传数组结构,还可以添加索引,比如
content[list][0]、content[list][1]会自动解析为数组格式
内容的提问来源于stack exchange,提问作者Artiom O
相关产品推荐
相关产品推荐

