Heim > Web-Frontend > js-Tutorial > Lösung für das Problem des Benutzersitzungsfehlers bei der Verwendung von Ajax

Lösung für das Problem des Benutzersitzungsfehlers bei der Verwendung von Ajax

韦小宝
Freigeben: 2018-01-01 18:36:57
Original
1217 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Lösung des Problems des Benutzersitzungsfehlers bei der Verwendung von Ajax vor. Er hat einen bestimmten Hinweis und Wert für das Erlernen von Ajax.

Bei der Verwendung Der SpingMVC-Interceptor behandelt das Problem des Benutzersitzungsfehlers. Wenn die Benutzersitzung fehlschlägt, wird eine Reihe von Javascript-Zeichenfolgen zurückgegeben, um den Browser des Benutzers zu zwingen, zur Anmeldeseite zu springen. Wenn jedoch Ajax zum Anfordern von Daten verwendet wird, wird nach einer fehlgeschlagenen Überprüfung nur eine Zeichenfolge beantwortet und JavaScript wird nicht ausgeführt. Dies liegt daran, dass die Ajax-Anforderung nicht vom Browser, sondern vom XMLHTTPRequest-Objekt initiiert wird gibt zurück Die Informationen werden vom XMLHTTPRequest-Objekt empfangen und im js-Objekt gespeichert.

Um mit dieser Situation umzugehen, können HTTP-Anfragen zunächst im Hintergrund beurteilt werden und Ajax-Anfragen können getrennt von normalen http-Anfragen verarbeitet werden.
Anhand der von Ajax gesendeten Anforderungsheaderinformationen können Sie feststellen, dass die Headerinformationen der Ajax-Anfrage X-Requested-With:XMLHttpRequest enthalten. Dadurch können Sie feststellen, ob es sich um eine Ajax-Anfrage handelt.

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;
}
Nach dem Login kopieren

Javascript-Code, Sie können die globalen Standardoptionen für Ajax-Anfragen ein für alle Mal festlegen

//设置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';
    }
  }
});
Nach dem Login kopieren

DataTables wird im Projekt auch zum Erstellen von Datentabellen verwendet. Es wurde festgestellt, dass die obige Javascript-Konfigurationsmethode in Datentabellen nicht wirksam ist. Informationen zu Fehlern finden Sie unter: http://datatables. net/tn/7 Sie müssen das Fehlerattribut von Ajax konfigurieren.

$('#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';
    }
  }
 }
});
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels Es wird für das Lernen aller hilfreich sein und ich hoffe auch, dass jeder die chinesische PHP-Website unterstützt.

Verwandte Empfehlungen:

Eine kurze Analyse des Problems von JSON-Daten, die vom Ajax-Hintergrund erfolgreich übertragen werden

Ajax überträgt Daten im JSON-Format an der Hintergrund. Ursachenanalyse und Lösung des 415-Fehlers

Ajax-Beispielcode für das Absenden des Formulars und das Hochladen von Dateien

Das obige ist der detaillierte Inhalt vonLösung für das Problem des Benutzersitzungsfehlers bei der Verwendung von Ajax. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage