javascript - 为什么我的删除函数只删除 jquery 中express中的第一个元素

标签 javascript jquery node.js express mongoose

当我按下特定元素的删除按钮时,我的删除功能仅删除第一个元素,y? list.pug(我的 View 文件)

ul
        each sport_list in sports_list
            li(class='form'):  a(href='/sport/'+sport_list.name) #{sport_list.name}

            form.form-horizontal(class='delete')
                input(type='hidden', name='_csrf', value=_csrf id='_csrf')
                input(type='hidden', name='id', value=sport_list.id id='id')
                .form-group
                    .col-sm-offset-3.col-sm-7
                        button.btn.btn-success(type='submit' class='form')
                            i.fa.fa-trash-o
                            | Delete

        else
            li There are no Sport

ma​​in.js(我的主 js 库文件)

$(function() {
        $('.form').each(function() {
            $(this).click(function(e) {
                e.preventDefault();

                $.ajax({
                    method: "POST",
                    url: '/deleteSport' + $("#id").val(),
                    data: {_csrf: $("#_csrf").val(), id: $("#id").val()}
                    // success: function(result) {
                    //     // Do something with the result
                    //     console.log('succesfully deleted'+result);
                    // }
                })
                    .done(function (json) {
                        console.log($("#id").val())
                        console.log(json);
                        $('.form').show();
                    });
            }); //missing ); here!
        });
    });

sport.js(我的 Controller js)

exports.deleteSport = (req, res) => {

    Sport.findByIdAndRemove({_id: req.body.id}, function(err, sport) {

        console.log(err,sport)
        if (err) {
            req.flash('errors', {msg: 'Something wrong'})
        }


        //res.redirect('/listsports');
        res.json({error:err,sport:sport});
    })
};

app.js(我的 app.js 文件)

app.post('/deleteSport:id', sportController.deleteSport);

这里有人可以告诉我我犯了什么错误吗?

最佳答案

现在我自己解决这个问题
list.pug(我的 View 文件)只需更改id=sport_list.id和细微更改

 ul(class='listItem')
        each sport_list in sports_list
            li
                a(href='/sport/'+sport_list.name) #{sport_list.name}

                form.form-horizontal(class='delete')
                    input(type='hidden', name='_csrf', value=_csrf id='_csrf')
                    input(type='hidden', name='id', class="id" value=sport_list.id id=sport_list.id)
                    .form-group
                        .col-sm-offset-3.col-sm-7
                            button.btn.btn-success(type='submit' class='deletebutton')
                                i.fa.fa-trash-o
                                | Delete

            button.btn.btn-success(type='submit')
                i.fa.fa-trash-o
                | Delete

        else
            li There are no Sport

ma​​in.js(我的主js库文件)而不是form标签上的.form目标并获取ID var id = $(form).find(".id").val() 下面的代码进行了一些细微的更改

$(function() {
        $('form').each(function() {
            var form = this;
            $(form).find(".deletebutton").click(function(e) {
                e.preventDefault();


                var id = $(form).find(".id").val()
                $.ajax({
                    method: "POST",
                    url: '/deleteSport/' + id,
                    data: {_csrf: $("#_csrf").val(), id: id}

                })
                    .done(function (json) {
                        console.log($("#id").val())
                        console.log(json);
                        $(form).closest('.listItem').remove();
            });
            });
        });
    });

sport.js 使用 findOneAndRemove 而不是 findByIdAndRemove

exports.deleteSport = (req, res) => {

    Sport.findOneAndRemove({_id: req.params.id}, function(err, sport) {

        console.log(err,sport)
        if (err) {
            req.flash('errors', {msg: 'Something wrong'})
        }


        //res.redirect('/listsports');
        res.json({error:err,sport:sport});
    })
};

就是这样!! :)

关于javascript - 为什么我的删除函数只删除 jquery 中express中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46702216/

相关文章:

node.js - 如何在 .ejs 文件中显示所有用户数据库(mongodb)的详细信息

node.js - 是否可以将文件夹从容器挂载到主机?

javascript - 是否可以为 Node.js fs.readFile() 编写 Jest 单元测试?

javascript - 我可以在带有 phonegap 的移动设备上使用 html5 拖放吗?

javascript - JQuery 最近类选择

javascript - 如何使用与下拉列表中选择的值不同的值

jquery - 选择器名称中的&符号是什么意思?

javascript - 正则表达式过滤掉除特定日期之外的所有内容

javascript - AngularJS - 将参数从指令传递回 Controller

javascript - 如何使用 map 上的按钮(不在 map 下方或上方)将 map 居中到 Google Map API 3 中的默认位置?