使用DELETE方法单击表中的行时,从MySQL删除记录

时间:2019-07-04 11:45:13

标签: javascript html mysql node.js ejs

当单击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代码,您可以张贴它的编写方式吗?

谢谢。

2 个答案:

答案 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('/');
});