Heim  >  Artikel  >  Web-Frontend  >  Ajax-Caching-Problem unter IE8/IE9

Ajax-Caching-Problem unter IE8/IE9

亚连
亚连Original
2018-05-23 16:49:071476Durchsuche

Dieser Artikel stellt Ihnen die Lösung des Ajax-Cache-Problems unter IE8/IE9 vor. Er ist sehr gut und hat einen Referenzwert. Freunde, die interessiert sind, sollten einen Blick darauf werfen

Einführung in Ajax

AJAX steht für „Asynchronous Javascript And XML“, was sich auf eine Webentwicklungstechnologie zur Erstellung interaktiver Webanwendungen bezieht.

AJAX = Asynchrones JavaScript und XML (eine Teilmenge der Standard Universal Markup Language).

AJAX ist eine Technologie zur Erstellung schneller, dynamischer Webseiten.

AJAX ermöglicht die asynchrone Aktualisierung von Webseiten durch den Austausch einer kleinen Datenmenge mit dem Server im Hintergrund. Das bedeutet, dass Teile einer Webseite aktualisiert werden können, ohne dass die gesamte Seite neu geladen werden muss.

Um es auf den Punkt zu bringen:

Ich arbeite derzeit an einer Login-Registrierungsbox für eine Website und verwende JQuery im Frontend. Da Anmeldung und Anmeldung nicht auf separaten Seiten erfolgen, werden sie als Popup-Fenster angezeigt. Deshalb habe ich mich entschieden, Ajax zu verwenden, um die Registrierungs- und Anmeldefunktionen zu implementieren. Ich dachte, es würde reibungslos verlaufen, aber während des Tests entdeckte ich ein seltsames Problem.

Beim Testen mit Chrome, ff und IE10+ gibt es im Grunde kein Problem, aber wenn ich auf IE8 und 9 laufe, scheint es, dass ich mich nicht anmelden kann, nachdem ich den richtigen Benutzernamen und das richtige Passwort eingegeben habe. Zuerst dachte ich, die Sitzung sei verloren und fing an, mich über das Hintergrund-Framework zu beschweren.

Aber nach geduldigem Debuggen stellte ich fest, dass die Sitzung nicht verloren ging. Ich mache mir jetzt große Sorgen. Kann es sein, dass ich mich nach so langer Zeit nicht einmal registrieren und anmelden kann? Das bringt mich dazu, mich selbst herabzusetzen und die verschiedenen Veränderungen im Leben und die Vergänglichkeit der Dinge zu beklagen. Nachdem ich ein Drittel der Zeit geräuchert hatte, beschloss ich, aufzumuntern.

Nachdem ich meinen Code mit wenigen Kommentaren sorgfältig beobachtet hatte, stellte ich fest, dass die URL in $.ajax etwas seltsam war. Obwohl die Adresse korrekt ist, sagt mir die Intuition von Programmierern und Belagerungslöwen, dass die beiden Brüder IE8 und 9 meinen Ajax möglicherweise aus eigener Initiative zwischengespeichert haben. Als ich daran dachte, zitterten meine Hände plötzlich und ich fügte hastig einen Zeitstempel nach der URL hinzu.

//就像这样url:myurl+"?t="+(new Date).valueOf()

Dann leeren Sie den Cache und versuchen Sie es erneut, Erfolg! Sie können sich ganz normal anmelden.

Nach der Überprüfung von Baidu stellte sich heraus, dass unter IE8 9 bei einer Ajax-Anfrage, wenn diese mit der vorherigen Anfrage übereinstimmt, die Daten nicht mehr vom Server, sondern direkt lokal abgerufen werden.

Um mit der übermäßigen Begeisterung niedrigerer IE-Versionen umzugehen, können Sie auf diese Weise das Cache-Attribut bei Verwendung von $.ajax auf false (nicht getestet) setzen.

Cache:

Es muss ein Parameter vom Typ Boolean sein. Der Standardwert ist „true“ (wenn der Datentyp „script“ lautet, werden die Anforderungsinformationen nicht aus dem Browser-Cache geladen, wenn er auf „false“ gesetzt ist).

Oder global festlegen (nicht getestet)

//$.ajaxSetup() 方法设置全局 AJAX 默认选项。$.ajaxSetup({ cache: false });

Auf diese Weise müssen Sie sich keine Gedanken mehr über das Caching machen.

Allerdings ist der Cache nicht so eingerichtet, dass er uns Ärger bereitet, schließlich können andere Browser ihn normal nutzen. Daher ist es notwendig, eine separate Einstellung für IE8 9 einzurichten, um die Informationen im Cache zu deaktivieren.

//jquery 1.9.0后取消了$.browserif($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="9.0")){
//做处理 
}

Nach 1.9.0 können Sie $.support verwenden, um zu beurteilen

// IE6789,input元素的checked属性不能被拷贝// IE下,input被更换类型后,无法保持前一个类型所设的值if(!$.support.radioValue&&!$.support.noCloneChecked){
//做处理 
}

Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

Das Problem, dass IE8 nicht jedes Mal mit Ajax-Zugriff aktualisiert werden kann

Ajax ruft eine restful Schnittstelle auf, um das Json-Format zu übertragen Datenmethode (mit Code)

Ajax- und CGI-Kommunikation unter Boa-Server (grafisches Tutorial)

Das obige ist der detaillierte Inhalt vonAjax-Caching-Problem unter IE8/IE9. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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