问题
用户在较长时间内没有动作,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').'";
查看更多关于Yii使用loginRequiredAjaxResponse解决AJAX会话超时_自学的详细内容...