这是我的简单表单:

<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调用时,它可以工作,所以。任何想法?


当前回答

当你在HTML表单中使用POST方法时,你需要从req中捕获数据。在服务器端,即Node.js。 还要加上

var bodyParser = require('body-parser')
app.use( bodyParser.json() );    
app.use(bodyParser.urlencoded({extended: false}));

OR

在HTML中使用method='GET'并按要求捕获数据。查询在服务器端,即Node.js

其他回答

如果你想在没有中间件的情况下构建已发布的查询,这可以做到:

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

使用中间件可能更好,这样你就不必在每条路由中一遍又一遍地写这个。

使用express-fileupload包:

var app = require('express')();
var http = require('http').Server(app);
const fileUpload = require('express-fileupload')

app.use(fileUpload());

app.post('/', function(req, res) {
  var email = req.body.email;
  res.send('<h1>Email :</h1> '+email);
});

http.listen(3000, function(){
  console.log('Running Port:3000');
});

Post参数可通过以下方式检索:

app.post('/api/v1/test',Testfunction);
http.createServer(app).listen(port, function(){
    console.log("Express server listening on port " + port)
});

function Testfunction(request,response,next) {
   console.log(request.param("val1"));
   response.send('HI');
}

请求流对我有用

req.on('end', function() {
    var paramstring = postdata.split("&");
});

var postdata = "";
req.on('data', function(postdataChunk){
    postdata += postdataChunk;
});

我一直在寻找这个问题。我遵循了上面所有的建议。Body仍然返回一个空对象{}。在我的情况下,它只是一些简单的html是不正确的。

在表单的html中,确保在输入标签中使用“name”属性,而不仅仅是“id”。否则,将不会解析任何内容。

<input id='foo' type='text' value='1'/>             // req = {}
<input id='foo' type='text' name='foo' value='1' /> // req = {foo:1}

我愚蠢的错误是你的利益。