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

时间:2009-03-03 14:05:26

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

我有这个函数利用jQuery的post功能向我的logout处理程序发送一个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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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