Ajax在Node / Express中删除请求和响应 – 在调用方法后,如何使用GET方法redirect?

我是新来的AJAX和节点,并不知道如何处理这个:我有一个删除ajax调用后,从数据库中删除行我想重新回到相同的路线,但与GET方法。 我相信我也可以从前端脚本redirect页面,我不知道哪个是正确的策略。 任何帮助表示赞赏!

前端js让ajax调用script.js

$('.deleteRepository').on('click', function(event) { event.stopImmediatePropagation(); var username = $(this).attr('username'); var repoName = $(this).attr('repoName'); var oReq = new XMLHttpRequest(); oReq.open("delete", "/user/"+username+'/'+repoName); oReq.send(); }); 

myRoute.js

 router.route('/:username/:repository') .delete(function(req, res) { console.log('\n\nDelete method called\n\n'); let username = req.params.username; let repoName = req.params.repository; deleteRepositoryFromUser(req, res) .then(function() { console.log('deleted, now redirect'); //I want to redirect to this page using GET, but logs DELETE //I also want to redirect to /user/TonyStark/Favorites res.redirect(200, '/user/'+username+'/Favorites'); }) 

安慰

 GET /user/TonyStark/delMe 200 114.702 ms - 4075 ... Delete method called deleteRepositoryFromUser() repoName: delMe username: TonyStark deleted, now redirect DELETE /user/TonyStark/delMe 200 4.568 ms - 44 //how can I make GET? //why is it not going to /user/TonyStark/Favorites? 

这行是错误的res.redirect(200, '/user/'+username+'/Favorites'); 。 您不能使用代码200redirect。您必须使用301或302进行redirect。请查看此处的http代码参考: https : //www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

在redirect之前,您也可以手动将HTTP方法设置为GET。
myRoute.js中

 router.route('/:username/:repository') .delete(function(req, res) { console.log('\n\nDelete method called\n\n'); let username = req.params.username; let repoName = req.params.repository; deleteRepositoryFromUser(req, res) .then(function() { console.log('deleted, now redirect'); //Explicitly set the HTTP method to GET req.method = "GET" res.redirect(200, '/user/'+username+'/Favorites'); })