当单击ejs
生成的表中的一行时,如何从MySQL数据库中删除记录。
这是我用来创建表格行的代码。
<% res.forEach(function(item){ %>
<tr>
<th scope="row"><%= item.idflights %></th>
<td><%= item.departureDate %></td>
<td><%= item.arrivalDate %></td>
<td><%= item.numberSeats %></td>
<td><%= item.numberTourists %></td>
<td><%= item.ticketPrice %></td>
</tr>
<% }); %>
现在,我想使用ID从数据库中删除特定的航班,但仅使用DELETE
中的REST
方法。
app.get('/flights/deleteflight', function (req, res) {
con.query("SELECT * FROM flights;", function (err, result) {
if (err) throw err;
res.render("flights/deleteflight", {res: result});
});
});
app.delete('/flights/deleteflight', function (req, res) {
const idflights = req.body;
con.query("DELETE flights WHERE idflights = ?;", idflights, function (err, result, fields) {
if (err) throw err;
});
res.redirect('/');
});
当我单击表格中的项目时,没有任何反应。我希望它启动app.delete()
代码并删除我单击的特定项目。
如果需要AJAX
代码,您可以张贴它的编写方式吗?
谢谢。
答案 0 :(得分:0)
假定在服务器上激活了DELETE,并且客户端上存在jQuery。 您必须更改服务器方法才能从请求中获取“ id”变量。
// When click on delete button..
// Get id of the item "id"
$.ajax({
url: '/flights/deleteflight/:id',
type: 'DELETE',
data: {"id": id},
dataType: 'json',
success: function(data) {
// remove from gui or reload or something..
}});
例如,您可以使用Postman测试执行DELETE请求,只是在执行客户端之前先验证服务器端。希望这会有所帮助!
答案 1 :(得分:0)
您首先需要向服务器发出请求才能删除记录。为此,您应该使用onclick事件来调用函数。在函数内部,您必须进行ajax调用才能将数据发送到服务器。在服务器端,必须正确检索数据才能使删除请求成功。
<% res.forEach(function(item){ %>
<tr onclick='deleteFlight(%= item.idflights %)'>
<th scope="row"><%= item.idflights %></th>
<td><%= item.departureDate %></td>
<td><%= item.arrivalDate %></td>
<td><%= item.numberSeats %></td>
<td><%= item.numberTourists %></td>
<td><%= item.ticketPrice %></td>
</tr>
<% }); %>
function deleteFlight(flightId) {
// make ajax delete call to your server with body: { flightId: flightId }
$.ajax({
url: '/flights/deleteflight',
type: 'DELETE',
data: { flightId: flightId },
dataType: 'json',
success: function(data) { }
});
}
在服务器端:
app.delete('/flights/deleteflight', function (req, res) {
const idflights = req.body.flightId;
con.query("DELETE flights WHERE idflights = ?;", idflights, function (err, result, fields) {
if (err) throw err;
});
res.redirect('/');
});