当会话超时时,浏览器请求的页面会重定向到登录页面。我也有一些页面将json返回给ajax请求。现在,当会话超时时,这些页面可以返回类似{sessiontimeout:1}
的内容而不是它们应该返回的内容。但是,这意味着我必须检查所有的ajax响应函数。或者我可以包装ajax函数来处理:
success:function(result){
if(result.sessiontimeout){
window.location.href = login page;
}else{realfunction(result)}
}
我的问题是,有更好的方法吗?
答案 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”是否存在。如果是,则意味着您的数据会重定向用户或刷新该页面。或者显示正确的消息