当我提交表单时,我无法从req.body中的控制器访问隐藏字段的值。但是,如果我将其更改为post,我可以。
查看
<form action="chat" method="get">
<input type="hidden" name="user2" value="Bob">
<input type="submit" value="Message" action="welcome">
</form>
控制器
getChat : function(req, res) {
Message.getAllChatMessages(req.user.local.name, req.query.user2, function(err, messages, target) {
if (err){
return next(err);
}
else {
res.render("chat", {
messages:messages,
title:"Private Chat",
target:req.query.user2});
}
});
},
routes.js
app.get("/chat", wall_controller.getChat);
答案 0 :(得分:0)
您似乎错误地理解 GET 方法的工作方式。
GET 使用querystrings
,hidden input
无法创建查询字符串。如果您想使用hidden input
,那么您必须使用 POST 方法。
我建议你使用 POST ,但如果你真的想使用 GET 。这个简单的修复应该有效:
// this should simply be a link
<form action="/chat?user2=Bob" method="get">
<input type="submit" value="Message" action="welcome">
</form>
然后您可以使用以下方法访问参数:
req.param('user2')
渲染:
res.render("chat", {
messages : messages,
title : "Private Chat",
target : req.param('user2')
});
答案 1 :(得分:0)
req.body
未设置GET
次请求。如果您希望req.body
包含查询参数值,则需要使用req.query
。或者您可以使用req.param()
先查找req.body
,然后req.query
。