req.body.name未定义

时间:2016-04-23 10:42:38

标签: node.js html5

您好我有一个表单,我发送到服务器,但它到达处理程序。我尝试打印出内容但身体未定义。请某人我做错了。

<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>

在我的服务器端下面是:

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'));
});

但是在控制台上打印

Name is undefined.

4 个答案:

答案 0 :(得分:4)

您需要在表单中使用服务器中的发布路径指定相同的action。所以/myactive -> /myaction。此外,name对象中没有req.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>

您可以使用以下代码

从路线中检索所选的性别
app.post("/myaction", function(request, response) {
    console.log("Gender is:", request.body.gender);
    response.sendStatus(200)
});

答案 1 :(得分:2)

您没有name="name"

的任何输入
<input type="radio" name="gender" value="Male"> Male<br> 
<input type="radio" name="female" value="Female"> Female

您可以获得req.body.genderreq.body.female

要获得正确的值,请执行以下操作:

<input type="radio" name="gender" value="Male"> Male<br> 
<input type="radio" name="gender" value="Female"> Female

然后您可以使用req.body.gender

获取值

答案 2 :(得分:-1)

请改为console.log('Name: '+req.body.gender);

答案 3 :(得分:-1)

每当您使用 req.body 时,请务必使用body-parser来解析正文中的内容......

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

您应按照与上述相同的顺序定义上述内容。

您的数据位于req.body.gender