首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >邮件请求后重定向页面[快递4]

邮件请求后重定向页面[快递4]
EN

Stack Overflow用户
提问于 2016-07-19 04:24:23
回答 1查看 8.5K关注 0票数 5
代码语言:javascript
复制
/**
 * @api {post} /logout Logout from system
 * @apiName Logout
 * @apiGroup Login
 */
router.post("/logout", function (req, res) {
  req.logout();
  req.session.destroy();
  return res.redirect("/");
});

我读过Node.js Express : How to redirect page after processing post request?,但不知道答案。

最近,我将登录更改为POST而不是GET。这样做后,重定向不起作用

代码语言:javascript
复制
POST /logout 307 4.912 ms - 36
POST / 302 3.922 ms - 23
GET / 200 7.519 ms - -

我可以在客户端手动完成,但我也想知道如何在服务器端这样做。这个是可能的吗?

客户端

HTML

代码语言:javascript
复制
<a href="javascript:;" onclick="logOut();">

JS

代码语言:javascript
复制
 function logOut() {
        $.post("/logout");
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-19 04:39:44

没有从您的$.post()生成的Javascript生成的Ajax调用的重定向。Ajax发送一个请求,得到一个响应。ajax调用本身根本不改变页面位置。这是Ajax调用的一个特点。

重定向工作时,浏览器正在加载一个新页面,而服务器告诉它更改它正在加载到新源的页面,而不是当浏览器仅仅发送一个Ajax调用时。

当然,您可以使用客户端Javascript来决定在$.post()完成后从客户端重定向。您甚至可以让来自$.post()的响应成为新的位置,然后客户端Javascript可以将window.location设置为新的URL。

代码语言:javascript
复制
function logOut() {
    $.post("/logout").then(function(data) {
        window.location = data.redirectUrl;
    });
}

在服务器上:

代码语言:javascript
复制
router.post("/logout", function (req, res) {
  req.logout();
  req.session.destroy();
  res.send({err: 0, redirectUrl: "/"});
});
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38449568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档