您好我有一个表单,我发送到服务器,但它到达处理程序。我尝试打印出内容但身体未定义。请某人我做错了。
<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.
答案 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.gender
或req.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