Как предотвратить кеширование JQuery Ajax-запроса в Internet Explorer?
Как предотвратить кэширование запроса jQuery Ajax в Internet Explorer?
5 ответов
Вы можете отключить кеширование глобально, используя $.ajaxSetup()
, например:
$.ajaxSetup({ cache: false });
Это добавляет временную метку к строке запроса при выполнении запроса. Чтобы отключить кеш для определенного $.ajax()
позвонить, установить cache: false
на нем локально, вот так:
$.ajax({
cache: false,
//other options...
});
Если вы устанавливаете уникальные параметры, то кеш не работает, например:
$.ajax({
url : "my_url",
data : {
'uniq_param' : (new Date()).getTime(),
//other data
}});
Cache-Control: no-cache, no-store
Эти два значения заголовка могут быть объединены, чтобы получить требуемый эффект как в IE, так и в Firefox.
Вот ответное предложение:
http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/
Идея состоит в том, чтобы добавить параметр в ваш ajax-запрос, содержащий, например, текущую дату и время, чтобы браузер не смог его кешировать.
Посмотрите на ссылку, это хорошо объяснено.
Вы можете определить это так:
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; ?>,
}
}
или вот так:
$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})
Надеюсь, поможет
Это старый пост, но если IE доставляет вам неприятности. Измените ваши запросы GET на POST, и IE больше не будет их кэшировать.
Я потратил слишком много времени на то, чтобы понять это нелегким путем. Надеюсь, поможет.