Node.js中req.body.newFee为undefined无法获取用户输入如何解决
问题根因与修复方案
你碰到的req.body.newFee返回undefined的问题是三个错误共同导致的,按优先级修复即可:
1. 前端表单缺少提交所需的name属性
HTML表单提交字段的键名由input标签的name属性决定,你当前的输入框仅配置了id和class为newFee,缺少必填的name属性,所以提交请求时根本不会携带这个字段。
修复:修改updfeepg.html中的输入框代码,新增
name="newFee":
<input type="number" class="newFee" id="newFee" name="newFee" max="999">
2. 后端路由嵌套注册逻辑错误
你把app.post('/updfeepg')的路由定义写在了/dbupdmenupg/:btnno的路由处理函数内部,这是Express使用的典型错误:
- 所有路由需要在服务启动时注册到顶层作用域,嵌套在其他请求回调中的路由只有触发父请求时才会被临时注册,还会出现重复注册的冲突,无法正常响应请求
- 你在渲染完
updfeepg页面后直接调用了res.end(),会直接终止响应,后续表单提交的请求也无法被正确处理
修复:
- 把所有嵌套在其他路由里的
app.post定义全部移到顶层,和你最开头的app.get('/loginpg')平级- 删除
req.params.btnno == 5逻辑里的res.end()代码,仅保留res.render('updfeepg')即可
3. 缺少表单解析中间件(排查项)
如果你的server.js开头没有配置解析表单数据的中间件,所有req.body都会默认返回undefined。
修复:在服务启动的最开头加上解析配置:
const express = require('express'); const app = express(); // 新增以下两行解析POST请求体 app.use(express.json()); app.use(express.urlencoded({ extended: true }));
内容的提问来源于stack exchange,提问作者user16617036
相关产品推荐
相关产品推荐

