Nodejs 使用 body-parser 在按下按钮时删除行
Nodejs Deleting row on button press using body-parser
调用数据库并生成 table。我想要它,所以我可以使用 body-parser 来了解我单击的按钮的 id / value / name 是什么,这将对应于我要删除的数据库条目。有没有一种方法可以使用表单来做到这一点,或者我必须向每个具有 id 的按钮添加一个 javascript 单击处理程序?
<form action="/deleteQuestion" method="POST">
<tbody>
<% results.forEach(function(r) { %>
<tr>
<th scope="row">
<%= r.Id %>
</th>
<td>
<%= r.Question %>
</td>
<td>
<%= r.Answer %>
</td>
<td>
<%= r.Wrong1 %>
</td>
<td>
<%= r.Wrong2 %>
</td>
<td>
<%= r.Wrong3 %>
</td>
<td>
<button value=<%=r.Id %> name="Delete">Delete</button>
</td>
</tr>
<% }); %>
</tbody>
</form>
nodejs 文件
app.post('/deleteQuestion', async(req, res) => {
//Won't work the way I want it to
const question = req.body.Delete
})
你应该包裹 table 行而不是整个 tbody,
然后添加 Id
作为参数
<tbody>
<% results.forEach(function(r) { %>
<form action="/deleteQuestion/"+<%= r.Id %> method="POST">
<tr>
<th scope="row">
<%= r.Id %>
</th>
<td>
<%= r.Question %>
</td>
<td>
<%= r.Answer %>
</td>
<td>
<%= r.Wrong1 %>
</td>
<td>
<%= r.Wrong2 %>
</td>
<td>
<%= r.Wrong3 %>
</td>
<td>
<button value=<%=r.Id %> name="Delete">Delete</button>
</td>
</tr>
</form>
<% }); %>
</tbody>
然后在节点中用
处理它
app.post('/deleteQuestion/:id', async(req, res) => {
// do the delete here using the id
})
一些非常骇人听闻的东西,但这似乎按照我希望的方式工作。如果有人知道正确的方法,我很乐意看到 link / 指南。
--编辑
几天后,我认为这是向按钮添加处理程序的正确方法(我忘记了 onclick 事件)
<head>
<script type="text/javascript">
function sendData(id) {
$.post('deleteQuestion/' + id)
}
</script>
</head>
<tbody>
<% results.forEach(function(r) { %>
<tr>
<th scope="row">
<%= r.Id %>
</th>
<td>
<%= r.Question %>
</td>
<td>
<%= r.Answer %>
</td>
<td>
<%= r.Wrong1 %>
</td>
<td>
<%= r.Wrong2 %>
</td>
<td>
<%= r.Wrong3 %>
</td>
<td>
<button type="submit" onclick="sendData(<%=r.Id %>)" class="btn btn-primary">Delete</button>
</td>
</tr>
<% }); %>
</tbody>
app.post('/deleteQuestion/:id', async(req, res) => {
console.log(req.params.id); })
调用数据库并生成 table。我想要它,所以我可以使用 body-parser 来了解我单击的按钮的 id / value / name 是什么,这将对应于我要删除的数据库条目。有没有一种方法可以使用表单来做到这一点,或者我必须向每个具有 id 的按钮添加一个 javascript 单击处理程序?
<form action="/deleteQuestion" method="POST">
<tbody>
<% results.forEach(function(r) { %>
<tr>
<th scope="row">
<%= r.Id %>
</th>
<td>
<%= r.Question %>
</td>
<td>
<%= r.Answer %>
</td>
<td>
<%= r.Wrong1 %>
</td>
<td>
<%= r.Wrong2 %>
</td>
<td>
<%= r.Wrong3 %>
</td>
<td>
<button value=<%=r.Id %> name="Delete">Delete</button>
</td>
</tr>
<% }); %>
</tbody>
</form>
nodejs 文件
app.post('/deleteQuestion', async(req, res) => {
//Won't work the way I want it to
const question = req.body.Delete
})
你应该包裹 table 行而不是整个 tbody,
然后添加 Id
作为参数
<tbody>
<% results.forEach(function(r) { %>
<form action="/deleteQuestion/"+<%= r.Id %> method="POST">
<tr>
<th scope="row">
<%= r.Id %>
</th>
<td>
<%= r.Question %>
</td>
<td>
<%= r.Answer %>
</td>
<td>
<%= r.Wrong1 %>
</td>
<td>
<%= r.Wrong2 %>
</td>
<td>
<%= r.Wrong3 %>
</td>
<td>
<button value=<%=r.Id %> name="Delete">Delete</button>
</td>
</tr>
</form>
<% }); %>
</tbody>
然后在节点中用
处理它app.post('/deleteQuestion/:id', async(req, res) => {
// do the delete here using the id
})
一些非常骇人听闻的东西,但这似乎按照我希望的方式工作。如果有人知道正确的方法,我很乐意看到 link / 指南。
--编辑
几天后,我认为这是向按钮添加处理程序的正确方法(我忘记了 onclick 事件)
<head>
<script type="text/javascript">
function sendData(id) {
$.post('deleteQuestion/' + id)
}
</script>
</head>
<tbody>
<% results.forEach(function(r) { %>
<tr>
<th scope="row">
<%= r.Id %>
</th>
<td>
<%= r.Question %>
</td>
<td>
<%= r.Answer %>
</td>
<td>
<%= r.Wrong1 %>
</td>
<td>
<%= r.Wrong2 %>
</td>
<td>
<%= r.Wrong3 %>
</td>
<td>
<button type="submit" onclick="sendData(<%=r.Id %>)" class="btn btn-primary">Delete</button>
</td>
</tr>
<% }); %>
</tbody>
app.post('/deleteQuestion/:id', async(req, res) => {
console.log(req.params.id); })