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; }
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'; } } });
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'; } } } });
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:
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!