这是我的简单表单:
<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。email或sReq。查询['email']或sReq。params['邮件'],等等。没有一个有用。它们都返回undefined。
当我更改为Get调用时,它可以工作,所以。任何想法?
适用于Express 4.1及以上版本
因为大多数答案都是使用Express, bodyParser, connect;其中不建议使用多部分。有一种安全的方法可以轻松地发送post多部分对象。
Multer可以用来代替connect.multipart()。
安装包
$ npm install multer
在你的应用中加载它:
var multer = require('multer');
然后,将它与其他表单解析中间件一起添加到中间件堆栈中。
app.use(express.json());
app.use(express.urlencoded());
app.use(multer({ dest: './uploads/' }));
Connect.json()处理application/json
Connect.urlencoded()处理application/x-www-form-urlencoded
multer()处理多部分/表单数据
如果你想在没有中间件的情况下构建已发布的查询,这可以做到:
app.post("/register/",function(req,res){
var bodyStr = '';
req.on("data",function(chunk){
bodyStr += chunk.toString();
});
req.on("end",function(){
res.send(bodyStr);
});
});
这将把这个发送到浏览器
email=emailval&password1=pass1val&password2=pass2val
使用中间件可能更好,这样你就不必在每条路由中一遍又一遍地写这个。