在POST请求中获取表单名称Express JS(使用EJS)

时间:2017-03-14 15:24:50

标签: javascript node.js express

所以我是Node和Express的新手,我正在尝试构建一个简单的投票应用程序。我想要做的是得到答案(answer1或answer2)然后更新我的数据库以将answer1(2)_votes增加一个。

然而,在我考虑实现这一点之前,我需要能够确定用户正在回答哪个问题。

目前我访问问题集,渲染index.ejs并在渲染函数中发送结果对象,然后我循环使用ejs来显示数据库中的问题和选项:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Voting App</title>
</head>
<body>

<% for(var i = 0; i < result.length; i++) { %>
  <form action="/submit-answer"  method="POST" id=<%= result[i].question %>>
    <div id="question"><%= result[i].question %></div>
    <input type="checkbox" name="answer1">
    <label for="answer1"><%= result[i].answer1 %></label>
    <input type="checkbox" name="answer2">
    <label for="answer2"><%= result[i].answer2 %></label>
    <button type="submit">Submit</button>
  </form>

<%}%>

</form>
</body>
</html>

然后我从表单中获取数据(使用body-parser)

app.post("/submit-answer", (req, res) => {
    console.log(req.body);
    res.redirect("/");
})

唯一的问题是这只会返回复选框数据(answer1:on或answer2:on)。我也需要result[i].question数据(或任何识别问题的方式),这样我就能找到表格正在回答哪个问题来增加问题的投票数量。

我该怎么做呢?我接近这个完全错了吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,你的问题的答案是:你不能这样做。

表单名称不会在POST请求中发送。仅发送名称(和值)或表单元素。因此,您可以在后端访问的唯一内容是表单的元素,而不是表单名称。不幸的是。

有关详细信息,请参阅有关Mozilla Developer Network的文章:

以及维基百科上的那些文章: