会话超时后处理Ajax

时间:2014-02-21 04:20:29

标签: php ajax session-timeout

当会话超时时,浏览器请求的页面会重定向到登录页面。我也有一些页面将json返回给ajax请求。现在,当会话超时时,这些页面可以返回类似{sessiontimeout:1}的内容而不是它们应该返回的内容。但是,这意味着我必须检查所有的ajax响应函数。或者我可以包装ajax函数来处理:

success:function(result){
  if(result.sessiontimeout){
    window.location.href = login page;
  }else{realfunction(result)}
}

我的问题是,有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

另一种方法是使用jQuery PHP库并且我经常使用它,你可以在http://code.google.com/p/jquery-php/downloads/list找到它以及如何使用它http://jquery.hohli.com/

这是它将如何运作。要检查会话是否已关闭,然后使用像这样的jQuery插件重定向用户,请在脚本文件中添加以下内容。

(function ($) {
    $.fn.jRedirect = function(location, time) {  
         return this.each(function() { 
            window.setTimeout ( function() {
           window.location = location; 
        },time*1000);
         });  
     } 
})(jQuery)

请务必在页面上添加此内容:

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="YOUR_PATH.jquery.php.js" type="text/javascript"></script>
<script type="text/javascript" src="YOUR_PATH.jquery.form.js" ></script>

然后添加一个像这样的按钮:

<a onclick="$.php('ajax.php');"> Check user</a>

在ajax.php文件中你放了这个:

include(YOUR_PATH_TO.'jQuery.php'); // from the download

//Note: make sure you already declared session start and see if there's a session.

if($session_out){ // check if session is out then redirect 

jQuery('body')->jRedirect('login page');

}else{

jQuery('#message')->html('I'm already logged in');

}

jQuery::getResponse();

我希望你做对了,它是替代解决方案,它100%有效。

答案 1 :(得分:0)

如您所知,“ajax请求的服务器响应”是什么,然后返回检查,是否返回任何基本值。如果json对象包含“id”键,则检查“id”是否存在。如果是,则意味着您的数据会重定向用户或刷新该页面。或者显示正确的消息