Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果会话过期,如何从ajax响应自动重定向网页?_Javascript_Ajax_Session - Fatal编程技术网

Javascript 如果会话过期,如何从ajax响应自动重定向网页?

Javascript 如果会话过期,如何从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内容

这是我的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内容


如果会话已过期,如何通过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();
}