我有这个函数利用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错误。唯一的问题是浏览器中的页面没有变化。
有什么想法吗?
答案 0 :(得分:1)
当您发布ajax请求时,您可以在服务器上重定向所有您想要的,但您所做的只是确定哪个页面最终响应该ajax请求。如果要重定向整个页面,则需要从整个页面发布,或者构建处理响应的javascript,以了解何时需要重定向并在那里进行。
答案 1 :(得分:0)
问题是服务器的回调是异步javascript调用而不是页面回发。 如果您想在浏览器中更改页面,则在调用注销功能后,您还必须在javascript函数中执行此操作。