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

提交Pug表单时req.body返回空对象{}的技术问题咨询

解决POST表单提交后req.body为空的问题

1. 表单输入缺少name属性

HTML表单提交数据时,依赖输入元素的name属性来标识字段,你的Pug代码里的输入框仅设置了id,没有name属性,导致服务器无法识别提交的字段内容。

修改Pug表单,给输入框添加name属性:

form.form.form-user-data(action='/submit-user-data' method='POST')
    .form__group
      label.form__label(for='name') Name
      input#name.form__input(type='text', name='name', value=`${user.name}`, required)
    .form__group.ma-bt-md
      label.form__label(for='email') Email
      input#email.form__input(type='email', name='email', value=`${user.email}`, required)
    .form__group.form__photo-upload
      img.form__user-photo(src=`img/${user.photo}`, alt='User photo')
      a.btn-text(href='') Choose new photo
    .form__group.right
      button.btn.btn--small.btn--green(type="submit") Save settings

2. 未配置请求体解析中间件

Express框架默认不会自动解析POST请求的表单数据,需要添加express.urlencoded()中间件处理application/x-www-form-urlencoded类型的请求体(普通表单默认编码类型)。

在你的Express主文件(如app.js)中添加以下代码:

const express = require('express');
const app = express();

// 解析表单请求体
app.use(express.urlencoded({ extended: true }));

// 挂载路由
const router = require('./你的路由文件路径');
app.use(router);

extended: true允许解析复杂的对象和数组,若仅需简单键值对,可设为false。

完成以上两步后重启服务器,提交表单即可正常获取req.body中的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:17:42