我正在学习node.js和表达框架的基础知识。 我有一个带有两个按钮的简单页面:
<form action="/home2" method="post">
<button name="butt1">butt1</button>
<button name="butt2">butt2</button>
</form>
我想在控制台中看到按下了哪个按钮:
router.post('/', function(req, res, next) {
console.log(req.body.name);
res.render('home2', { title: 'post' });
});
在控制台中,我看到
undefined
如何访问按钮的名称?
答案 0 :(得分:2)
我认为这会对你有所帮助。
<form action="/home2" method="post">
<button name="butt1">butt1</button>
<button name="butt2">butt2</button>
</form>
router.post('/home2', function(req, res, next) {
if(req.body.hasOwnProperty("butt1")){
console.log("butt1 clicked");
}else{
console.log("butt2 clicked");
}
res.render('home2', { title: 'post' });
});
答案 1 :(得分:1)
您可以使用的一个技巧是将两个用作提交按钮:
<form action="/home2" method="post">
<button name="button_id" value="1" type="submit">butt1</button>
<button name="button_id" value="2" type="submit">butt2</button>
</form>
在服务器端,您现在应该将button_id
的值设置为1或2,具体取决于单击的按钮。
答案 2 :(得分:1)
首先,因为你使用POST我假设你已经有了身体解析器中间件,如果没有检查Body Parser Middleware
您的代码需要进行一些更改
in html
<form action="/home2" method="post">
<button name="butt" value='1'>butt1</button>
<button name="butt" value='2'>butt2</button>
</form>
并在快递中
router.post('/home2', function(req, res, next) {
console.log(req.body.butt);
res.render('home2', { title: 'post' });
});
req.body.name
必须为req.body.butt
/
必须为/home2
答案 3 :(得分:0)
我知道这是一个非常老的问题,但是我有一个相同的问题,并且我找到了一种更好的解决方案,因此我想与大家分享。您可以将不同的formaction添加到不同的按钮,并对应用程序中的操作执行不同的操作。示例:
<form action="/home2" method="post">
<button formaction="wigglebutt" name="butt" value='1'>butt1</button>
<button formaction="slapbutt" name="butt" value='2'>butt2</button>
</form>
然后在后端:
app.post("/wigglebutt", (req, res) => {
});
app.post("/slapbutt", (req, res) => {
});