【问题标题】:Why is my page not redirecting even though it does not error out?为什么我的页面没有重定向,即使它没有出错?
【发布时间】:2009-03-03 14:05:26
【问题描述】:

我有这个函数,它利用 jQuery 的 post 功能向我的注销处理程序发送一个 ajax 请求,这会破坏会话(由 asp.net 设置)并重定向到登录页面:

<script type="text/javascript">
    //<![CDATA[
    function doLogout() {
        var conf = false;
        conf = confirm("Really log out?");
        if (conf === true) {
            $.post("logout.ashx");
        }
    }
    //]]>
</script>

到目前为止,注销链接功能正常:用户单击它,弹出确认框,如果他们单击是,它会加载注销处理程序:

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
    With context
        If .Session IsNot Nothing Then
            context.Session.Clear()
            context.Session.Abandon()
        End If
        .Server.Transfer("default.aspx", False)
    End With
End Sub

我也尝试过使用Response.Redirect,没有任何不同。

我已通过跟踪验证一切正常。没有 javascript 或 asp.net 错误。唯一的问题是浏览器中的页面没有变化。

有什么想法吗?

【问题讨论】:

    标签: asp.net vb.net visual-studio-2008 jquery


    【解决方案1】:

    当您发布 ajax 请求时,您可以根据需要在服务器上进行重定向,但您所做的只是确定最终响应该 ajax 请求的页面。如果你想重定向整个页面,你需要从整个页面发布,或者构建处理响应的 javascript 来知道你什么时候想要重定向并在那里做。

    【讨论】:

      【解决方案2】:

      问题在于对服务器的回调是异步 javascript 调用,而不是页面回发。 如果您想在浏览器中更改页面,您还必须在调用注销功能后在您的 javascript 函数中执行此操作。

      【讨论】:

      • 所以调用一个window.location([url])?
      • 是的,虽然我认为您需要确保您的注销功能首先成功。我认为在注销成功后只发回注销页面并在那里进行重定向的建议可能是要走的路。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多