我正在尝试修复我的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');
});
});
答案 0 :(得分:0)
在node.js中,您使用的是.delete谓词,这意味着它将忽略除标题中规定的DELETE方法之外的所有请求。这就是为什么不处理您的GET请求。因此,您可以轻松地使用 window.location.replace()重定向成功,而无需向服务器发送第二个请求。另一方面,如果提出第二个请求至关重要,只需创建一个新的路径
示例:
app.get('/', function (req, res) {
res.send('GET request to the homepage');
});
此外,您应该重新考虑您的代码,因为您将无法使用ajax请求重定向。