【问题标题】:Express req.body is empty in form submission [duplicate]Express req.body 在表单提交中为空[重复]
【发布时间】:2018-05-14 11:36:51
【问题描述】:

我有以下表单并提交它会导致一个空的req.body 这是我的 HTML:

<form action="/contact" name="contactUs" id="contactUs" method="POST">
   <label for="email">Email Message</label>
   <input type="text" name="email" id="email">
  <input type="submit" value='Save'>
</form>

这是我server.js的(部分):

 app.use(bodyParser.json());
 app.use("/", expressStaticGzip("dist"));

app.post("/contact", (req, res) => {
  console.log('anyone there?')
  res.json(req.body);
});

console.log 工作正常。不过,我得到了一个空对象 req.body

【问题讨论】:

  • 您的输入标签未关闭/&gt;
  • @chsdk — 他们在使用 XHTML 的问题中没有建议,因此元素已关闭。
  • @Quentin 这是一个不好的做法,我们应该提一下。
  • @chsdk — 这不是坏习惯。使用旨在使其与 XML 兼容的可选功能来膨胀 HTML 是没有意义的,而且是浪费字节。

标签: javascript node.js express


【解决方案1】:

您以 HTML POST 形式提交,这意味着您使用的是Content-Type: application/x-www-form-urlencoded

这意味着你需要添加app.use(express.urlencoded({ extended: false })) ,这样express可以解析该请求并将其放入req.body

【讨论】:

  • 谢谢布鲁斯。非常感谢
  • 根据您的表单数据,如果您有简单的文本/数字/电子邮件/密码字段,我发现我的 req.body 会在我在提交表单中明确提到 enctype="text/html" 时被填充。跨度>
  • 至今仍然有帮助。谢谢
猜你喜欢
  • 2022-01-26
  • 2020-01-08
  • 1970-01-01
  • 2019-02-08
  • 2016-02-15
  • 2020-12-17
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多