AJAX DELETE方法重定向不起作用

时间:2016-07-19 12:01:26

标签: javascript jquery ajax express

我正在尝试修复我的jQuery AJAX命令,其中点击<a href="#">会触发DELETE请求我为其设置路由的特定网址,然后重定向到新的页。我的AJAX的DELETE部分工作正常,但出于某种原因,成功部分将我的重定向解释为/app作为DELETE请求。它似乎无法识别我在网址之前设置的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');
        });
    });

1 个答案:

答案 0 :(得分:0)

在node.js中,您使用的是.delete谓词,这意味着它将忽略除标题中规定的DELETE方法之外的所有请求。这就是为什么不处理您的GET请求。因此,您可以轻松地使用 window.location.replace()重定向成功,而无需向服务器发送第二个请求。另一方面,如果提出第二个请求至关重要,只需创建一个新的路径

示例:

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

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