Javascript 如果会话过期,如何从ajax响应自动重定向网页?
这是我的javascriptJavascript 如果会话过期,如何从ajax响应自动重定向网页?,javascript,ajax,session,Javascript,Ajax,Session,这是我的javascript function rDir() { window.location="./index.php?status=session"; } 我对php代码的ajax响应是 <script type="text/javascript"> rDir(); </script> 如果我使用header'Location:index.php?status=session;;在php中它可以工作。。但它会在div中加载index.php内容
function rDir() {
window.location="./index.php?status=session";
}
我对php代码的ajax响应是
<script type="text/javascript">
rDir();
</script>
如果我使用header'Location:index.php?status=session;;在php中它可以工作。。但它会在div中加载index.php内容
如果会话已过期,如何通过ajax加载重定向主页?虽然我对PHP不是很精通,但我假设如果会话已过期,那么您将获得一个类似3xx的重定向响应代码。在这种情况下,浏览器会自动发出新请求并下载请求重定向到的页面。这对ajax请求是透明的,因此最终在成功处理程序中,您将获得登录页面的HTML 顺便说一句,您自己正在设置位置头im也假设您自己在处理请求,即使会话已过期。那么 1.您可以更改返回的状态代码。
2.每隔一段时间在外观检查会话状态中使用ajax服务。如果您发现会话已过期,请重定向到登录页面。要实现此目的,有很多方法: 1-最简单的:
Var MustBe = "script type="\text/javascript\">rDir();</script>";
if(Request.ResponseText == MustBe ){
rDir();
}
3-一个好方法:
if(Request.responsetext.indexof("rDir();") !== -1){
rDir();
}
我之所以选择这些方法,是因为它很容易在代码中实现。正如我已经告诉你的,我从php获得了重定向的响应,但它没有重定向我的页面,它只是在我的DIV中加载登录页面的内容。这是因为请求是一个ajax请求。打开的页面将不会重定向,但在会话到期后发出的特定请求将被重定向。如果我刷新页面或单击一些非ajax链接,它将被重定向。我还想在任何人点击ajax链接时重定向它。。ajax链接只是显示消息,但没有重定向。@user2788392正如Parv Sharma所说,您正在重定向请求,这意味着请求不会加载您的脚本,我将加载index.php?session=awesome尝试我的解决方案之一cho'{msg:Login Success!!!redirecting…,rdir:home.php};是ajax请求的JSON响应,我在特定的登录ajax函数中使用它重定向。但是在这个问题上,我使用另一个ajax函数来检索数据。。好的,数据更多的是在这个上下文中,我没有使用JSON格式或者从ajax函数重定向它,我想从ajax函数执行它。而且我没有使用JQuery。。无论如何,谢谢您的回复
if(Request.responsetext.indexof("rDir();") !== -1){
rDir();
}