req.body.name 未定义

EI-*_*-01 2 html node.js

您好,我有一个表单要发送到服务器,但是当它到达处理程序时。我尝试打印出内容,但正文未定义。请有人我做错了什么。

<form action="/myactive" method="POST">
 <input type="radio" name="gender" value="Male"> Male<br>
 <input type="radio" name="gender" value="Female"> Female
<button type="submit" class="btn btn-primary btn-md">Medium</button>
</form>
Run Code Online (Sandbox Code Playgroud)

在我的服务器端下方是:

var express = require('express');
var app = express();
var bodyparser = require('body-parser');

app.set('port', process.env.PORT || 3030);

app.use(bodyparser.urlencoded({ extended: false }));

app.use(express.static(__dirname + '/public'));

app.get('/', function(req, res) {
    console.log('Index page');
});

app.post('/myaction', function(req, res){
    console.log('Name: '+req.body.name); //returns undefined
    res.end("Welcome");
});

app.listen(app.get('port'), function(){
    console.log('Listening on port '+app.get('port'));
});
Run Code Online (Sandbox Code Playgroud)

但在控制台上它打印

Name is undefined.
Run Code Online (Sandbox Code Playgroud)

jah*_*ado 5

您需要action在表单中使用服务器中的 post 路由指定相同的内容。所以/myactive -> /myaction。此外namereq.body对象中没有属性。当您name="gender"在表单中指定时,这意味着该gender属性将附加到req.body对象

<form action="/myaction" method="POST">
 <input type="radio" name="gender" value="Male"> Male<br>
 <input type="radio" name="gender" value="Female"> Female  
 <button type="submit" class="btn btn-primary btn-md">Medium</button>
</form>
Run Code Online (Sandbox Code Playgroud)

您可以使用以下代码从您的路线中检索所选性别

app.post("/myaction", function(request, response) {
    console.log("Gender is:", request.body.gender);
    response.sendStatus(200)
});
Run Code Online (Sandbox Code Playgroud)