在项目中,经常会遇到session失效后,点击任何链接无反应的情况!这样给客户的体验就不是很好,以为是系统出了故障!所以在项目中我们会处理session失效后的跳转问题(一般给用户提示,并跳转后登录页面),代码实现如下所示:
// 着重处理ajax请求跳转的问题,因为form表单请求可以直接在服务器端完成跳转
$.ajaxSetup({ contentType:"application/x-www-form-urlencoded;charset=utf-8", cache:false, global: true, complete: function (XMLHttpRequest, textStatus) { var data = XMLHttpRequest.responseText; if(data.substr(0,15) == "session-invalid") { alert('当前会话已失效,请重新登陆!'); if( window.top != window.self ){ window.top.location = "/index.php?r=site/logout"; // 跳转到登录页面 }else{ window.location = "/index.php?r=site/logout"; } } } });
// PHP服务端代码处理
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' && !$_SESSION['sUserId']){ //如果是ajax 请求 echo 'session-invalid'; exit; }