Ajax和Mongodb,使用_id

时间:2016-03-24 14:08:58

标签: javascript ajax node.js mongodb express

我有一个使用express.js的测试项目,它显示网页上mongo数据库中的所有项目。每个数据库条目都显示在页面上,并带有一个删除它的按钮。

-each i in docs
        p ----------------------
        p <strong>Name: #{i.name}
        p <strong>Type: #{i.type}
        p <strong>Amount: #{i.quantity}
        p <strong>ID: #{i._id}    
        input(type = 'button', value ="delete item", id='delete')

我希望按钮向/api/item/_id

发送DELETE请求

我的脚本如下

script(type='text/javascript').
        $(document).ready(function() {
            $("#delete").click(function() {

                $.ajax({
                    type: 'DELETE',
                    url: '/api/item/' + this._id
                }).done(function(result) {

                });
            });
        });

这不是发送所需的请求。我如何将_id从项目传递到按钮?

如果我将URL设置为知道_id,如下所示,则可以正常工作并删除该项目

url: '/api/item/56f3e800d6f24d0819e43fcc'

先谢谢

2 个答案:

答案 0 :(得分:3)

使用data-属性

HTML

<input type="button" id="delete" data-id="mongo id here" />

JS

 $.ajax({
   type: 'DELETE',
   url: '/api/item/' + this.attr('data-id')
 })

另外,您最好使用class而不是id =&#34; delete&#34;

答案 1 :(得分:0)

如果我理解您的循环代码,您似乎为每个按钮分配了相同的HTML ID属性:

input(type = 'button', value ="delete item", id='delete')

这使得无效 HTML(只有一个项目可以拥有给定的ID)。您可以将delete属性设为,使其合法拥有多个具有相同类别的项目。

如果您console.log(this)点击了这些按钮的任何内容,this指的是什么?你得到了什么_id?无论点击什么按钮,您都得到相同的_id吗?