Как предотвратить кеширование 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 больше не будет их кэшировать.

Я потратил слишком много времени на то, чтобы понять это нелегким путем. Надеюсь, поможет.

Другие вопросы по тегам