>  기사  >  웹 프론트엔드  >  jQuery ajax 전역 함수는 세션 만료 후 ajax 점프 문제를 처리합니다.

jQuery ajax 전역 함수는 세션 만료 후 ajax 점프 문제를 처리합니다.

高洛峰
高洛峰원래의
2017-01-07 09:39:401244검색

웹 작업을 하다 보면 세션 만료 문제를 고려해야 하는 경우가 많습니다. 세션이 만료되면 페이지가 로그인 인터페이스로 이동하게 되는데, 페이지가 만료되면 두 가지 방법이 있습니다. 사용자가 백그라운드를 요청하는 방법: 기존 방법과 비동기식 요청은 백그라운드로 이동하여 만료된 작업을 가로채고 직접 이동합니다. 그러나 비동기식 요청은 전체 페이지를 새로 고치지 않습니다. 세션 만료는 일반적인 방법으로 처리할 수 없으며 추가 작업이 필요합니다.

구체적인 아이디어: 인터셉터에서 Ajax 요청인지 확인합니다. Ajax 요청인 경우 메시지가 반환됩니다. 페이지에 전역 Ajax 처리 이벤트를 추가하여 메시지를 판단하고, 세션이 만료되었다고 보고되면 위치는 로그인 페이지로 이동합니다

첫 번째 단계에서 인터셉터는 Ajax 요청인지 여부를 결정합니다.

if(request.getHeader("x-requested-with")!=null
&& request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){
//是ajax请求,则返回个消息给前台
PrintWriter printWriter = response.getWriter();
printWriter.print("{sessionState:timeout}");
printWriter.flush();
printWriter.close();
}else{
//不是ajax请求,则直接跳转页面
}

두 번째 단계는 글로벌 Ajax 처리 이벤트를 설정하고 인터셉터나 필터와 유사하게 세션 만료를 처리하는 것입니다.

$.ajaxSetup({
contentType:"application/x-www-form-urlencoded;charset=utf-8",
cache:false ,
complete:function(data,TS){
//对返回的数据data做判断,
//session过期的话,就location到一个页面
}
}
});

이것은 jQuery를 기반으로 한 비동기 처리 메커니즘이며, 완전한 코드를 작성하지 않았습니다. 지난번에 회사에서 작성한 코드를 가져올 수 없었습니다. 기사의 일부 코드는 온라인에서 찾아서 붙여넣었습니다. ㅋㅋㅋ 벌써 아침 30시가 넘었는데 너무 졸려서 그냥 생각을 적었어요.

PS: Ajax 작업 전역 모니터링, 사용자 세션 무효화

jQuery(function ($) {
// 备份jquery的ajax方法
var _ajax = $.ajax;
// 重写ajax方法,先判断登录在执行success函数
$.ajax = function (opt) {
var _success = opt && opt.success || function (a, b) { };
var _opt = $.extend(opt, {
success: function (data, textStatus) {
try {
if (data.sessionstatus == false) {
//用户失效进行操作
//return;
}
} catch (e) {
}
_success(data, textStatus);
}
});
_ajax(_opt);
};
});

세션 만료 후 Ajax 점프 문제를 처리하기 위한 jQuery ajax 전역 함수에 대한 자세한 내용은 다음을 참조하세요. 관련 기사 PHP 중국어 웹사이트!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.