您好,我有一个表单要发送到服务器,但是当它到达处理程序时。我尝试打印出内容,但正文未定义。请有人我做错了什么。
<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)
您需要action在表单中使用服务器中的 post 路由指定相同的内容。所以/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>
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)
| 归档时间: |
|
| 查看次数: |
8890 次 |
| 最近记录: |