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

Express中req.body.[name]返回undefined问题求助

解决req.body返回undefined的问题

嘿,我来帮你理清这个问题!其实你的body-parser配置是没问题的,问题出在请求方法和参数获取方式不匹配上,跟中间件没生效没关系~

核心原因:GET请求的参数不在req.body里

当表单用method="GET"提交时,浏览器会把输入的参数拼在URL的查询字符串(query string)里,比如/your-route?your-name=xxx,而不是放在请求体(request body)中。body-parser中间件是用来解析POST/PUT这类带请求体的请求的,所以GET请求下req.body自然就是undefined。

两种修正方案

方案1:保持GET请求,改用req.query获取参数

你的表单代码不用改,只需要把路由里的req.body换成req.query就行:

// 路由处理修改为
app.get("/[route]", function(req, res){
  console.log(req.query.[name]); // 用req.query获取GET参数
});

方案2:改成POST请求,继续用req.body

如果你确实想通过req.body获取参数,需要把表单的请求方法改成POST,同时调整路由为POST类型:

  1. 修改表单代码:
<form action="/[route]" method="POST"> <!-- method改为POST -->
  <input type="text" name="[name]">
  <input type="submit" value="Show Results">
</form>
  1. 修改路由处理:
// 把app.get改成app.post
app.post("/[route]", function(req, res){
  console.log(req.body.[name]); // 现在就能正常拿到参数了
});

额外说明

你的body-parser配置app.use(bodyParser.urlencoded({extended: true}));是完全正确的,它能解析POST请求中x-www-form-urlencoded格式的表单数据,这也是浏览器默认的表单提交格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:10:08