Home / PostsPost
jQuery Ajax 拦截
嘟噜聪2015/02/11 23:46:17 3392人已阅
简介 需注意,此类解决办法有一定的局限,最好要求,页面是一个整体,页面可以共享,那么只需要一个全局的定义就可以了。同时可以在response的里面写入状态如403,ajax的error回调能识别到.
首先建了个拦截器,来判断session超时。用户登录后会保存用户信息在一个session里,在session的监听里,session超时会销毁保存在session里的用户信息,而拦截器就通过session里是否有用户信息来判断session超时。
ps: 这是以前写的东西,不是Symfony2框架里的,Symfony2框架我还没整明白呢。
protected function is_login()
{
if (!$this->session->userdata(SESSION_NAME))
{
if( $this->is_ajax() )
{
echo json_encode(array('isSessionOut' => true));die;
}else
{
echo redirect(base_url('login'));
}
}
}
/**
* 判断是否是AJAX提交
* @return bool
*/
protected function is_ajax()
{
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
return true;
else
return false;
}
判断如果是Ajax过来的话按照json的格式输出
接下来是jQuery代码,需要注意的是 这块代码需要写在你引入jQuery库之后调用ajax方法之前位置。
(function($) { var ajax = $.ajax; $.ajax = function(s) { var old = s.success; s.success = function(resultData, textStatus, jqXHR) { if(resultData.isException){ alert('程序异常,请重新登录!'); window.location = base_url + '/login'; } if(resultData.isSessionOut){ alert('登录超时,请重新登录!'); window.location = base_url + '/login'; return false; }else if( resultData.accessModuleNoRight ) { alert(resultData.message); return false; } old(resultData, textStatus, jqXHR); } ajax(s); } })(jQuery);以上就是jQuery Ajax拦截的方法
ExtJs 的我以后有时间再写,那块还算是比较大的
很赞哦! (0)
文章评论
点击排行
本栏推荐
标签
站点信息
- 微信公众号