2010-11-18 217 views
0

我正在使用ajax将php生成的内容加载到某些菜单单击的主div上。从ajax加载的子页面重新加载页面

我想要做的是具有某种重新加载功能 - 如果一些超时过期我希望用户重新认证,我在菜单上单击检查此内容加载到div之前。

如果我使用php的 标题(“location:login”);

我想它要加载DIV中重定向,但我想整个页面重定向...

回答

1

你能做的最好的就是这样

有些事情在你的文件的顶部

ob_start(); 

在此添加到你的PHP文件的末尾

if($_SEESION['active']){ 
    ob_end_flush() 
}else{ 
    ob_clean(); 
    echo "{Session_invalid}"; 
    ob_end_flush(); 
} 

然后你AJAX(XMLHttpRequest)

ajax = new XMLHttpRequest(); 
ajax.open("GET", "/folder/yourFile.php", true); 
ajax.onreadystatechange = function(){ 
    if(readyState == 4){ 
     if(ajax.responseText == "{Session_invalid}"){ 
      document.location = "http://your.authenticate.url/" 
     }else{ 
      mydiv.innerHTML = ajax.responceText 
     } 
    } 
} 
ajax.send(); 

请注意我已经建立了你所说的不删除你的ajax只是添加如果检查到AJAX

Allso这个代码已经建成,所以你可以将它添加到任何文件,即使你没有使PHP文件,所以它只是顶部和底部的编辑,请确保那里的标签虽然

这符合 user228395点1

1

事实上,重定向一个XMLHttpRequest没有太大的意义。基本上有几个选项。

  1. 你让你的AJAX调用返回的东西,让你的JavaScript明白,你需要直接(在这种情况下,重定向用JavaScript)。

  2. 在尝试加载div中的内容以检查用户是否需要进行身份验证之前,您可以执行AJAX调用。

  3. 您保留一个变量/ cookie来检查用户的会话是否已过期。在每次请求之前,检查是否属于这种情况。如果是这样,你让用户进行身份验证。

祝你好运!

+0

您好,感谢双方,都会尝试一下,不知道哪种解决方案呢。我忘了说,我正在使用jQuery的Ajax,我想我可以用jquery post的成功获得它,并将它匹配到“{Session_invalid}”响应.... – myha 2010-11-18 12:22:32