Maison >interface Web >js tutoriel >La fonction globale jQuery ajax gère le problème de saut ajax après l'expiration de la session

La fonction globale jQuery ajax gère le problème de saut ajax après l'expiration de la session

高洛峰
高洛峰original
2017-01-07 09:39:401315parcourir

Lorsque nous travaillons sur le Web, nous devons souvent considérer le problème de l'expiration de la session. Lorsque la session expire, la page passe à l'interface de connexion. Cependant, il y a un problème lorsque la page expire, il existe deux manières de le faire. Les utilisateurs doivent demander l'arrière-plan : méthode traditionnelle et requête asynchrone. La méthode traditionnelle est plus facile à résoudre. La requête passe en arrière-plan, intercepte l'opération expirée et saute directement. Cependant, la requête asynchrone ne rafraîchira pas la page entière. l'expiration de la session ne peut pas être gérée de la manière habituelle et nécessite des opérations supplémentaires.

Idée spécifique : Déterminer s'il s'agit d'une requête ajax dans l'intercepteur - s'il s'agit d'une requête ajax, un message sera renvoyé - ajouter un événement de traitement ajax global à la page pour juger le message, et s'il est signalé que la session a expiré, puis l'emplacement Aller à la page de connexion

Dans un premier temps, l'intercepteur détermine s'il s'agit d'une requête 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请求,则直接跳转页面
}

La deuxième étape consiste à configurer un événement de traitement ajax global, qui gère l'expiration de la session, similaire à un intercepteur ou un filtre :

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

Il s'agit d'un mécanisme de traitement asynchrone basé sur jQuery, code complet Je ne l'ai pas écrit. Je n'ai pas pu emporter avec moi le code que j'ai écrit dans l'entreprise la dernière fois. Une partie du code de l'article a été trouvée en ligne et collée. Il est déjà une demi-heure du matin et j'ai trop sommeil. Je viens d'enregistrer mes pensées.

PS : surveillance globale des opérations Ajax, invalidation de session utilisateur

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);
};
});

Pour plus de fonctions globales jQuery ajax permettant de gérer les problèmes de saut ajax après l'expiration de la session, veuillez faire attention vers des articles connexes Site Web chinois PHP !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn