【发布时间】:2021-09-26 04:58:11
【问题描述】:
点击按钮点赞帖子后,我有一个简单的抓取:
function like(post_id){
fetch(`/like/${post_id}`);
}
router.get('/like/:post_id/', authController.isLoggedIn, async (req, res, next) => {
try {
//liking
req.flash("flash", 'You liked the post!');
return res.redirect('back');
}
catch{
req.flash("flash", 'Like failed :(');
return res.redirect('back');
}
});
理论上这应该做它的事情,然后重定向回与 Flash 消息相同的页面。
它没有这样做,而是将带有 fash 消息的页面加载为我从未调用过的获取请求!
它应该重新加载页面以行动/地形/...而不是侧面加载。我的问题是什么?我需要在重定向之前以某种方式结束提取吗?
【问题讨论】:
-
fetch()调用本身不会更改浏览器中的页面,无论响应是什么,即使响应是重定向。他们只是尽职尽责地将重定向响应状态代码和标头返回到您的称为fetch()的Javascript。由您的 Javascript 来处理该响应。浏览器不会对该响应自动执行任何操作。浏览器仅对来自浏览器提交的表单或浏览器提交的 URL 栏请求的响应进行操作。
标签: javascript node.js express fetch