没有为
当我提交表单时,我无法从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);
您似乎误解了方法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')
});
GET
请求设置req.body
。如果希望req.body
包含查询参数值,则需要使用req.query
。或者您可以使用req.param()
,它先查找req.body
,然后查找req.query
。