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

时间:2014-10-15 13:05:41

标签: node.js model-view-controller

当我提交表单时,我无法从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);

2 个答案:

答案 0 :(得分:0)

您似乎错误地理解 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')
});

答案 1 :(得分:0)

{p> req.body未设置GET次请求。如果您希望req.body包含查询参数值,则需要使用req.query。或者您可以使用req.param()先查找req.body,然后req.query