这是我的简单表格:
<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。
sReq.query.email
sReq.query['email']
sReq.params['email']
undefined
当我更改为 Get 调用时,它可以工作,所以..有什么想法吗?
从Express 4.16.0* 开始,情况再次发生了变化,您现在可以像在 Express 3.0 中一样使用和。 express.json()``express.urlencoded() ***
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对象:
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()不推荐使用。
express.bodyParser()
app.use(express.bodyParser());
…相当于:
app.use(express.json()); app.use(express.urlencoded()); app.use(express.multipart());
存在安全问题express.multipart(),因此最好明确添加对您需要的特定编码类型的支持。如果您确实需要多部分编码(例如支持上传文件),那么您应该阅读此.
express.multipart()