You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express项目前端表单提交req.body为空,Postman提交正常的问题排查

问题原因及解决方案:表单输入控件缺少name属性

嘿,我一眼就发现问题所在了——你的HTML表单里的所有输入控件都没有添加name属性!

为什么会出现这个情况?

浏览器提交HTML表单时,只有带有name属性的表单控件数据才会被包含在请求体中。你用Postman测试能正常工作,是因为你手动指定了键值对(相当于给每个字段设置了name);但你的Handlebars模板里,<input>标签只设置了id,没有name,导致浏览器根本没把这些字段的数据发送到服务器,所以req.body始终为空。

怎么解决?

只需要给每个<input>标签添加和id同名的name属性即可,具体修改如下:

修改views/adminAdd.hbs中的表单控件:

<!-- First Name 输入框 -->
<input id="firstname" name="firstname" type="text" class="validate" required>

<!-- Last Name 输入框 -->
<input id="lastname" name="lastname" type="text" class="validate" required>

<!-- Email 输入框 -->
<input id="email" name="email" type="email" class="validate" required>

<!-- Password 输入框 -->
<input id="password" name="password" type="password" class="validate" minlength="6" required>

关于body-parser的配置

你的body-parser配置是完全正确的:

app.use(bodyParser.urlencoded({ extended: false }));

这个中间件专门用来解析application/x-www-form-urlencoded格式的表单数据(也就是你表单指定的编码类型),所以不需要额外添加其他配置。

修改完成后,再通过浏览器提交表单,req.body就能正常获取到各个字段的值,用户也会被成功添加到MongoDB数据库中。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:55:49