Wie verhindere ich, dass eine jQuery Ajax-Anforderung in Internet Explorer zwischengespeichert wird?
Wie verhindere ich, dass eine jQuery Ajax-Anforderung in Internet Explorer zwischengespeichert wird?
Antworten:
Sie können das Caching global deaktivieren, indem Sie $.ajaxSetup()
beispielsweise Folgendes verwenden :
$.ajaxSetup({ cache: false });
Dies hängt einen Zeitstempel an den Querystring an, wenn die Anforderung gestellt wird. Um den Cache für einen bestimmten $.ajax()
Anruf zu deaktivieren, legen cache: false
Sie ihn wie folgt lokal fest:
$.ajax({
cache: false,
//other options...
});
cache: false
wird nur korrekt mit HEAD arbeiten und GET - Anfragen. Auch, wenn Sie setzen cache: false
in $.ajaxSetup
, nach jQuery.ajaxSetup () Dokumentation , wird es „Standardwerte für die zukünftige Ajax - Anfragen.“ Ja, der Cache wird für alle zukünftigen HEAD- und GET AJAX-Anforderungen deaktiviert.
cache: false
. Das globale Deaktivieren des Caching scheint übertrieben, aber die Kontrolle pro Anforderung ist perfekt. Danke
Wenn Sie eindeutige Parameter festlegen, funktioniert der Cache nicht. Beispiel:
$.ajax({
url : "my_url",
data : {
'uniq_param' : (new Date()).getTime(),
//other data
}});
cache
Parameter bereits hinter den Kulissen.
Cache-Control: no-cache, no-store
Diese beiden Header-Werte können kombiniert werden, um die erforderlichen Auswirkungen auf IE und Firefox zu erzielen
Hier ist ein Antwortvorschlag:
http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/
Die Idee ist, Ihrer Ajax-Abfrage einen Parameter hinzuzufügen, der beispielsweise das aktuelle Datum und die Uhrzeit enthält, damit der Browser ihn nicht zwischenspeichern kann.
Schauen Sie sich den Link an, er ist gut erklärt.
cache
Parameter bereits hinter den Kulissen.
Sie können es so definieren:
let table = $('.datatable-sales').DataTable({
processing: true,
responsive: true,
serverSide: true,
ajax: {
url: "<?php echo site_url("your url"); ?>",
cache: false,
type: "POST",
data: {
<?php echo your api; ?>,
}
}
oder so:
$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})
ich hoffe es hilft
Dies ist ein alter Beitrag, aber wenn der IE Ihnen Probleme bereitet. Wenn Sie Ihre GET-Anforderungen in POST ändern, werden sie vom IE nicht mehr zwischengespeichert.
Ich habe viel zu viel Zeit damit verbracht, dies auf die harte Tour herauszufinden. Ich hoffe es hilft.
cache:false
von Fall zu Fall sind der richtige Weg.