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: falseSie ihn wie folgt lokal fest:
$.ajax({
cache: false,
//other options...
});
cache: falsewird nur korrekt mit HEAD arbeiten und GET - Anfragen. Auch, wenn Sie setzen cache: falsein $.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
}});
cacheParameter 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.
cacheParameter 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:falsevon Fall zu Fall sind der richtige Weg.