小编典典

如何访问 POST 表单字段

all

这是我的简单表格:

<form id="loginformA" action="userlogin" method="post">
    <div>
        <label for="email">Email: </label>
        <input type="text" id="email" name="email"></input>
    </div>
<input type="submit" value="Submit"></input>
</form>

这是我的Express.js /Node.js 代码:

app.post('/userlogin', function(sReq, sRes){    
    var email = sReq.query.email.;   
}

我试过sReq.query.emailor
sReq.query['email']orsReq.params['email']等​​。它们都不起作用。他们都回来了undefined

当我更改为 Get 调用时,它可以工作,所以..有什么想法吗?


阅读 217

收藏
2022-03-01

共1个答案

小编典典

从Express 4.16.0*
开始,情况再次发生了变化,您现在可以像在
Express 3.0 中一样使用和。
express.json()``express.urlencoded() ***

Express 4.0 到 4.15*
这是不同的:
*

$ npm install --save body-parser

然后:

var bodyParser = require('body-parser')
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
}));

其余的就像在 Express 3.0 中一样:

首先你需要添加一些中间件来解析body的post数据。

添加以下一行或两行代码:

app.use(express.json());       // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies

然后,在您的处理程序中,使用该req.body对象:

// assuming POST: name=foo&color=red            <-- URL encoding
//
// or       POST: {"name":"foo","color":"red"}  <-- JSON encoding

app.post('/test-page', function(req, res) {
    var name = req.body.name,
        color = req.body.color;
    // ...
});

注意express.bodyParser()不推荐使用。

app.use(express.bodyParser());

…相当于:

app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());

存在安全问题express.multipart(),因此最好明确添加对您需要的特定编码类型的支持。如果您确实需要多部分编码(例如支持上传文件),那么您应该阅读此.

2022-03-01