2017-03-14 55 views
0

所以我是Node和Express的新手,我正尝试构建一个简单的投票应用程序。我想要做的是得到答案(答案1或答案2),然后更新我的数据库以将answer1(2)_votes加1。在POST请求中获取表单名称Express JS(使用EJS)

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

此刻,我访问的问题集合,使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> 

然后我像这样(用肢体解析器)从形式获取数据

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

唯一的问题是,这将只返回复选框数据(ANSWER1:或ANSWER2:上)。我还需要result[i].question数据(或者任何识别问题的方法),以便我可以找到表单响应哪个问题以增加问题的投票数量。

我该怎么做呢?我接近完全错误吗?

+1

您可以在表单中包含“',它不会显示在表单上,​​但您可以在服务器上找到它 –

回答

1

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

表单名称不在POST请求中发送。只发送名称(和值)或表单元素。所以你可以在后端访问的唯一东西是表单的元素,而不是表单名称。

欲了解更多信息,请参见本文的Mozilla开发者网络:

和维基百科上的这些条款:

相关问题