网站地图    收藏   

主页 > 后端 > php资料库 >

Yii使用loginRequiredAjaxResponse解决AJAX会话超时_自学

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] 问题 用户在较长时间内没有动作,php回话已经超时,回话过期后又有一个ajax请求但是程序并没有任何反应,例如在gridview中,gridview的内容完全消失。 正确的行为 显示登录页面,登录后...

问题

用户在较长时间内没有动作,php回话已经超时,回话过期后又有一个ajax请求但是程序并没有任何反应,例如在gridview中,gridview的内容完全消失。

正确的行为

显示登录页面,登录后再重定向回来。

解决方法

在配置文件中设置 loginRequiredAjaxResponse:

...
'components'=>array(
'user'=>array(
...
'loginRequiredAjaxResponse' => 'YII_LOGIN_REQUIRED',
...
),
...
In your view or template

<?php
if (Yii::app()->components['user']->loginRequiredAjaxResponse){
Yii::app()->clientScript->registerScript('ajaxLoginRequired', '
jQuery("body").ajaxComplete(
function(event, request, options) {
if (request.responseText == "'.Yii::app()->components['user']->loginRequiredAjaxResponse.'") {
window.location.href = options.url;
}
}
);
');
}
?>
 

注意:

以上代码在 options.url 为可用页面的url是测试通过,如果不是这种情况或者你只是想显示登录页面请替换:

window.location.href = options.url;

window.location.href = "'.Yii::app()->createUrl('/site/login').'";


 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论