如何将ID传递给路由器删除方法?

时间:2018-07-11 05:12:49

标签: node.js express

我有一个带有删除按钮的数据列表,如下所示。

<ul class="quotes">
    <% for(var i=0; i<quotes.length; i++) {%>
        <li class="quote" data-id= "<%= quotes[i]._id %>">
            <span><%= quotes[i].name %></span> - 
            <span><b><%= quotes[i].price %></b></span>
            <button class="delete-todo">&times;</button>
        </li>
    <% } %>
</ul>

我从jQuery传递要删除的ID,如下所示:

$('.delete-todo').on('click',  function(e){
    e.preventDefault();
    var id = $(this).parent().data('id');
    $.post('/products',{'id':id},function(data){
    },'json');
});

我有一个product.router.js如下:

router.delete(':/id',  product_controller.product_delete);

我对如何调用此路由器删除并将id传递给此路由器方法感到困惑。

2 个答案:

答案 0 :(得分:2)

在NodeJS中

router.delete('/products/:id',  product_controller.product_delete);

您将在product_controller.product_delete函数中进入paramsreq.params.id

和在jQuery中

$('.delete-todo').on('click',  function(e){
    e.preventDefault();
    var id = $(this).parent().data('id');
    $.ajax({ 
        url: '/products/'+ id,
        type: 'DELETE',
        success: function(data) {
            // your success response data here in data variable
            console.log('result ', data);
        }
    });
});

答案 1 :(得分:1)

检查

Express JS

router.delete('/:id',  product_controller.product_delete);

// If you are using router in `app.use('products', router)`

OR

router.delete('products/:id',  product_controller.product_delete);

Ajax呼叫

$.ajax({
  url: '/products/'+ id,
  type: 'DELETE',
  success: callback
});