2009-03-03 49 views
0

我有这个功能,它利用jQuery的岗位功能来发送一个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错误。唯一的问题是浏览器中的页面不会改变。

任何想法?

回答

1

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

0

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

+0

所以调用window.location([url])? – Anders 2009-03-03 14:19:57

相关问题