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

无法读取POST请求值:Express表单数据接收问题排查

解决表单提交值无法获取的问题

问题根源是表单里的提交按钮缺少name属性:HTML表单提交时,只有带name属性的控件才会把value以键值对形式发送到服务器,你的按钮只有value没有name,所以服务器端接收不到任何数据。

步骤1:修改FORM.ejs,给按钮添加name属性

给两个提交按钮加上相同的name属性(比如btn),这样提交时会把对应按钮的value发送到服务器:

<html lang="en" >
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"></head>

<body>
    <form method="POST" action="/">
        <button type="submit" name="btn" value="myvalue1">POST 1</button>
        <button type="submit" name="btn" value="myvalue2">POST 2</button>
    </form>
</body>
</html>

步骤2:在APP.js中获取提交的值

现在可以通过req.body.btn拿到对应按钮的value值:

const express = require("express");
const S1_APP = express();
const ejs = require("ejs"); 
const bodyParser = require("body-parser"); 
S1_APP.use(bodyParser.urlencoded({ extended: false }));
S1_APP.set('view engine', 'ejs');//template engine

S1_APP.get("", function (req, res) {
    res.render('FORM.ejs');  
});

S1_APP.post("/",function(req, res) {
    // 获取提交的按钮值
    const submittedValue = req.body.btn;
    console.log(submittedValue); // 会输出myvalue1或myvalue2
    res.send(`提交的值是:${submittedValue}`);
});

S1_APP.listen(8080, function (err) {
    if (err) console.log(err);
    console.log("Server listening on PORT 8080");
});

另外,你的代码里const http = require('http');没有实际用到,可以删掉,不影响功能。

内容的提问来源于stack exchange,提问作者raymond van ophoven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:18:34