Node.js环境下从URL获取title值返回undefined问题如何解决
问题排查
req.query用于获取URL后缀的查询参数(即?后拼接的键值对),你当前表单的action属性值为/payment,未携带任何查询参数,因此无法读取到title值。- 你提交的POST表单内没有定义
name为title的字段,即使从请求体req.body取值也无法获取对应内容。
修复方案
方案1:将title作为查询参数拼接在action路径
修改前端表单代码,直接在action地址后拼接参数:
<form action="/payment?title=对应课程标题" method="post"> <button type="submit" class="btn btn-primary">₹ 4500</button> </form>
后端原有const title = req.query.title代码无需修改即可正常读取值。
方案2:将title作为表单字段传递
在表单内新增隐藏输入框存放title值:
<form action="/payment" method="post"> <input type="hidden" name="title" value="对应课程标题"> <button type="submit" class="btn btn-primary">₹ 4500</button> </form>
需提前在Express项目中配置表单解析中间件(放在所有路由定义之前),否则req.body会返回undefined:
app.use(express.urlencoded({ extended: true }))
后端修改取值逻辑:
const title = req.body.title;
另外你代码中Payment.insertOne方法里course_Title字段尚未赋值,后续补全为course_Title: title即可。
内容的提问来源于stack exchange,提问作者Geeta
相关产品推荐
相关产品推荐

