代码之家  ›  专栏  ›  技术社区  ›  Anders

为什么我的页面没有重定向,即使它没有错误?

  •  0
  • Anders  · 技术社区  · 16 年前

    我有一个函数,它利用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错误。唯一的问题是浏览器中的页面没有改变。

    有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Joel Coehoorn    16 年前

    当您发布ajax请求时,您可以在服务器上重定向所需的所有内容,但您要做的只是确定哪个页面最终响应该ajax请求。如果要重定向整个页面,则需要从整个页面发布,或者构建处理响应的javascript,以知道何时要重定向并在那里执行。

        2
  •  0
  •   Andy Rose    16 年前

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