【问题标题】:post back when session expires in ajax call在 ajax 调用中会话过期时回发
【发布时间】:2011-04-28 00:40:44
【问题描述】:

在我的一个页面上,我有一个使用 ajax 异步加载内容的 div。当会话到期时,用户应该被重定向回登录屏幕。但是,当会话到期并触发 ajax 调用时,登录页面将放入 div 中。我想要的是将用户重定向回登录屏幕。

【问题讨论】:

    标签: jquery ajax session


    【解决方案1】:

    解决这个问题的一种方法是添加一个文本来唯一标识登录页面,并在 AJAX 回调中使用它来再次重定向到登录页面。这是使用jQuery global callbacks....的示例代码。

    $(document).bind("ajaxComplete", function(event, response, ajaxOptions) {
        if (response.status == 200 && response.responseText.match(/LOGIN_PAGE_UNIQUE_KEY/)) {
            self.location = "/web/login?timeout=1";
            return false;
        }
    
    });
    

    【讨论】:

    • 很高兴能帮上忙。如果您喜欢这个答案并且它解决了您的问题,请单击勾选标记接受它。这将帮助其他人知道哪个可能是他们问题的最佳解决方案
    • 有趣的是,这对我们有用,而无需添加任何类型的唯一键。原因是我们正在做的 ajax 调用是 MVC 中的部分视图,所以如果他们成功了 responseText 只是部分的 html。但如果失败,登录屏幕将加载到 div 中,并且 responseText 将自动包含您插入的任何“LOGIN_PAGE_UNIQUE_KEY”,因为脚本本身正在 responseText 中返回。太棒了。
    【解决方案2】:

    我认为扩展头是关键,登录页面可以发送额外的头以被 xmlhttprequest 处理程序捕获。

    或者在更懒惰和不可靠的方法中,在登录页面上使用 javascript,如果当前页面的位置不是登录页面,则使用 javascript 重定向(它依赖于 javascript,但因为您正在发出 xhr 请求)。

    【讨论】:

    • 这似乎是一个不错的偷懒技巧。有没有人测试过这个?懒得去测试了。
    【解决方案3】:

    将会话不再有效的通知发送回 JavaScript。当 JavaScript 得到相应的错误时,将其发送到window.location = @987654321@

    【讨论】:

      猜你喜欢
      • 2011-03-07
      • 1970-01-01
      • 2023-04-01
      • 2016-12-23
      • 2013-10-07
      • 2018-02-15
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多