Maison >interface Web >js tutoriel >Comment gérer l'échec de la session utilisateur dans le fonctionnement Ajax

Comment gérer l'échec de la session utilisateur dans le fonctionnement Ajax

php中世界最好的语言
php中世界最好的语言original
2018-04-02 09:44:261557parcourir

Cette fois, je vais vous montrer comment gérer l'échec de la session de l'utilisateur de l'opération Ajax, et quelles sont les précautions en cas d'échec de la session de l'utilisateur de l'opération Ajax. Ce qui suit est un exemple pratique. cas, jetons un coup d'oeil.

Lors de l'utilisation de l'intercepteur spingMVC pour gérer le problème d'échec de la session utilisateur, lorsque la session utilisateur échoue, une chaîne de chaînes javascript sera renvoyée pour forcer le navigateur de l'utilisateur à accéder à la connexion page. Cependant, lorsque Ajax est utilisé pour demander des données, seule une chaîne recevra une réponse après l'échec de la vérification et JavaScript ne sera pas exécuté. En effet, la requête Ajax est initiée par l'objet XMLHTTPRequest plutôt que par le navigateur. Après l'échec de la vérification, le serveur. renvoie Les informations seront reçues par l'objet XMLHTTPRequest et enregistrées dans l'objet js.

Afin de faire face à cette situation, les requêtes Http peuvent d'abord être jugées en arrière-plan, et les requêtes Ajax peuvent être traitées séparément des requêtes http ordinaires.
En observant les informations d'en-tête de requête envoyées par Ajax, vous pouvez constater que les informations d'en-tête de la requête Ajax contiendront X-Requested-With:XMLHttpRequest. Grâce à cela, vous pouvez déterminer s'il s'agit d'une requête Ajax.

String requestType = request.getHeader("X-Requested-With");
if(requestType != null && "XMLHttpRequest".equalsIgnoreCase(requestType.trim())) {
  //如果是ajax请求
  response.setHeader("sessionStatus", "timeout");
  response.sendError(601, "session timeout.");
  return false;
}

code javascript, vous pouvez définir les options globales par défaut pour les requêtes Ajax, une fois pour toutes

//设置Ajax请求的全局默认options
jQuery.ajaxSetup({
  type:'post',
  complete:function(xhr, ts){ //XMLHttpRequest, textStatus
    var sessionStatus = xhr.getResponseHeader('sessionstatus');
    if(sessionStatus == 'timeout') {
      alert('页面过期,请重新登录!');
      window.top.location.href = 'Login.htm';
    }
  }
});

DataTables est également utilisé dans le projet pour créer des tableaux de données que j'ai trouvé. que l'utilisation de la méthode de configuration javascript ci-dessus dans les tables de données ne peut pas prendre effet, message d'erreur voir : http://datatables.net/tn/7 Vous devez configurer l'attribut d'erreur d'ajax

$('#example').dataTable( {
 "ajax": {
  "url": "findRoles.htm",
  "type": "POST",
  "error": function(xhr, ts, et) { //XMLHttpRequest, textStatus, errorThrown
    var sessionStatus = xhr.getResponseHeader('sessionstatus');
    if(sessionStatus == 'timeout') {
      alert('页面过期,请重新登录!');
      window.top.location.href = 'Login.htm';
    }
  }
 }
});

Je pense que vous l'avez maîtrisé après avoir lu le cas dans cet article. Pour des méthodes plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

jQuery+Ajax détermine si le code de vérification saisi est réussi

Comment créer un champ de recherche intelligent avec la fonction Ajax Prompt

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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