gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:47:58 24 4
gpt4 key购买 nike

所以我是 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 数据(或任何识别问题的方式),以便我可以找到表单正在回答哪个问题,以增加该问题的投票数量。

我该如何去做呢?我的做法完全错误吗?

最佳答案

不幸的是,你的问题的答案是:你做不到。

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

有关详细信息,请参阅 Mozilla 开发者网络上的这篇文章:

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

关于javascript - 在 POST 请求中获取表单名称 Express JS(使用 EJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42790012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com