使用ajax jquery node.js从数据表和mysql中删除数据时遇到问题

时间:2018-12-23 21:06:02

标签: jquery node.js ajax

我需要帮助,以便在后端使用nodejs从jquery数据表中删除数据。我已经尝试了很多东西,但是没有用。我使用相同的方法在表上添加数据,并且可以正常工作。我不明白为什么删除不起作用。我已经尝试了很多代码来解决这个问题,所以请帮助我!

js

 router.delete('/',(req,res)=>{ 
        var sil ={barkod: req.body.barkod};

        console.log(sil);
        connection.query('DELETE FROM stok WHERE barkod=?',sil,(err,rows,fields)=>{
        console.log(sil);
            if(!err){   

                res.sendFile(path.join(__dirname + '/secondPage.html'));
            }
            else{
                console.log(err);
            }
            connection.end();
        });
    });

HTML

<script>
    $(document).ready(function (){

       $('#stockManager').DataTable({
          responsive: true,
          select: true,
             ajax : {
            url : "http://localhost:3000/secondPage",},
          columns: [
              {data : "urun_adi"}, 
              {data : "barkod"}, 
              {data : "stok_sayi"}, 
              {data : "satis_fiyati"}, 
              {data : "maliyet"},
              {data : "firma_adi"}
          ],

       });
    });
</script>

<table id="stockManager" class="display" style="width:100%">
    <thead>
        <tr>
            <th>Adı</th>
            <th>Kod</th>
            <th>Miktar</th>
            <th>Satış Fiyatı</th>
            <th>Maliyet</th>
            <th>Tedarikçi</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
    </table>
<form id="delete" action="/secondPage" method="delete"  >
        <div class="col-xs-6 form-group">
            <label for="delete_row">Silinecek ürünün barkodunu giriniz:</label>
      <input id="delete_row" type="delete_row"class="form-control" name="delete_row">
        <button id="delete" type="submit">DELETE PRODUCT</button> 
        </form> 
    <script type='text/javascript'>
     $('delete').on('click', function(e) {
        e.preventDefault();
        console.log(barkod);
        $.ajax({
          type: 'DELETE',
          url: '/secondPage/' + barkod,
          success: function(){
            console.log('timam');
          }
        });
      });</script>

2 个答案:

答案 0 :(得分:1)

当您发送DELETE请求时,您没有收到来自正文的数据(如POST)。

在DELETE请求中,应使用参数(类似于GET请求),如下所示:

router.delete('/:barkod', (req,res)=>{ 
    var sil = req.params.barkod;
.
.
.

Express会自动从网址中解析参数。

答案 1 :(得分:0)

您可以尝试像这样将数据传递给请求正文:

 "ajax": {
            "url": "ajax",
            "type": "DELETE",
            "data": function ( data ) {
                data.barkod = barkod;
           }
       },