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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:45:04