AJAX DELETE方法重定向不起作用

AJAX DELETE Method Redirect Not Working

本文关键字:不起作用 重定向 方法 DELETE AJAX      更新时间:2023-09-26

我正在尝试修复我的jQuery AJAX命令,其中单击<a href="#">会触发对我设置了路由的特定url的DELETE请求,然后重定向到新页面。我的AJAX的DELETE部分工作正常,但由于某种原因,成功部分将我重定向到/app解释为DELETE请求。它似乎无法识别我在URL之前设置的GET,并且默认为DELETE。有人能帮我确定我的方法的哪一部分不正确吗?

链接:

<a href="javascript:void(0);" id="card-delete-link"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span>DELETE</a>

jQuery:

<script type="text/javascript">
        $(document).ready(function() {
            $('#card-delete-link').click(function(){
                $.ajax({
                    method: 'DELETE',
                    url: '/app/edit/{{card.cardId}}',
                    success: function(){
                        console.log('Annotation ID: ' + '{{card.cardId}}' + ' was deleted');
                        $.ajax({
                            method: 'GET',
                            url:'/app'
                        });
                    }
                });
            });
</script>

浏览器控制台:

jquery.js:8630 DELETE http://localhost:3000/app 404 (Not Found)

路线:

appRoutes.route('/edit/:cardId')
    .delete(function(req, res){
        models.Card.destroy({
            where: {
                userId: req.user.userId,
                cardId: req.params.cardId           
            }
        }).then(function(){
            res.redirect('/app');
        });
    });

在node.js中,您正在使用.delete谓词,这意味着它将忽略除标头中规定的delete方法之外的所有请求。这就是为什么您的GET请求没有得到处理。因此,您可以使用window.location.replacement()在成功时轻松重定向,而无需向服务器发出第二次请求。另一方面,如果第二次请求很关键,只需创建一个新的路由

示例:

app.get('/', function (req, res) {
  res.send('GET request to the homepage');
});

此外,您应该重新思考您的代码,因为您将无法使用ajax请求进行重定向。