【问题标题】:AJAX DELETE Method Redirect Not WorkingAJAX DELETE 方法重定向不起作用
【发布时间】:2016-07-19 12:01:26
【问题描述】:

我正在尝试修复我的 jQuery AJAX 命令,其中单击 <a href="#"> 会触发 DELETE 对我设置了路由的特定 URL 的请求,然后重定向到新页面。我的 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');
        });
    });

【问题讨论】:

  • 尝试为这两个调用添加一个error: 处理程序,也许那里有什么...?

标签: javascript jquery ajax express


【解决方案1】:

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

例子:

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

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

【讨论】:

  • 感谢您的回答,非常有见地。我明白你在说什么,但你会在 ajax 请求之外推荐什么?我觉得.delete 是删除数据库记录的最佳实践,但问题是我无法弄清楚如何使用 HTML 元素在没有 ajax 的情况下触发该方法。我觉得一旦实现了这一点,我的路线上的重定向就会起作用。有什么建议吗?
  • 在success:function() {}的内部,在console.log()之后,而不是$.ajax,只写window.location.replace('/app')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 2015-02-08
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多