Jak zapobiec buforowaniu żądania Ajax jQuery w Internet Explorerze?
Jak zapobiec buforowaniu żądania Ajax jQuery w Internet Explorerze?
Odpowiedzi:
Możesz wyłączyć buforowanie globalnie $.ajaxSetup()
, na przykład:
$.ajaxSetup({ cache: false });
To dodaje znacznik czasu do kwerendy podczas wysyłania żądania. Aby wyłączyć pamięć podręczną dla określonego $.ajax()
połączenia, ustaw cache: false
ją lokalnie, w następujący sposób:
$.ajax({
cache: false,
//other options...
});
cache: false
będzie działał poprawnie tylko z żądaniami HEAD i GET. Ponadto, jeśli ustawisz cache: false
w $.ajaxSetup
według jQuery.ajaxSetup () dokumentację , to będzie „ustawione wartości domyślne dla przyszłych żądań Ajax”. Tak więc, wyłączy pamięć podręczną dla wszystkich przyszłych żądań HEAD i GET AJAX.
cache: false
. Globalne wyłączenie buforowania wydaje się przesadą, ale kontrola nad żądaniem jest idealna. Dzięki
Jeśli ustawisz unikalne parametry, pamięć podręczna nie będzie działać, na przykład:
$.ajax({
url : "my_url",
data : {
'uniq_param' : (new Date()).getTime(),
//other data
}});
cache
parametr już za kulisami.
Cache-Control: no-cache, no-store
Te dwie wartości nagłówka można łączyć, aby uzyskać wymagany efekt zarówno w przeglądarce IE, jak i Firefox
Oto propozycja odpowiedzi:
http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/
Pomysł polega na dodaniu parametru do zapytania ajax zawierającego na przykład bieżącą datę i godzinę, aby przeglądarka nie mogła jej buforować.
Spójrz na link, jest dobrze wyjaśnione.
cache
parametr już za kulisami.
możesz to zdefiniować w następujący sposób:
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; ?>,
}
}
lub tak:
$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})
mam nadzieję, że to pomoże
To jest stary post, ale jeśli IE sprawia ci problemy. Zmień swoje żądania GET na POST, a IE nie będzie ich już buforować.
Spędziłem zdecydowanie za dużo czasu, zastanawiając się nad tym na własnej skórze. Mam nadzieję, że to pomoże.
cache:false
dla poszczególnych przypadków.