Node.js通过表单提交将值从视图传递到控制器



当我提交表单时,我无法从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使用querystringshidden 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

最新更新