所以我是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
数据(或任何识别问题的方式),这样我就能找到表格正在回答哪个问题来增加问题的投票数量。
我该怎么做呢?我接近这个完全错了吗?
答案 0 :(得分:1)
不幸的是,你的问题的答案是:你不能这样做。
表单名称不会在POST请求中发送。仅发送名称(和值)或表单元素。因此,您可以在后端访问的唯一内容是表单的元素,而不是表单名称。不幸的是。
有关详细信息,请参阅有关Mozilla Developer Network的文章:
以及维基百科上的那些文章: