SABU
SABU

Reputation: 3697

How to prevent a jQuery Ajax request from caching in Internet Explorer?

How do I prevent a jQuery Ajax request from caching in Internet Explorer?

Upvotes: 280

Views: 166400

Answers (6)

Fajar A. R
Fajar A. R

Reputation: 31

you can define it like this :

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; ?>,
            }
        }

or like this :

$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})

hope it helps

Upvotes: 3

Some_Guy
Some_Guy

Reputation: 41

This is an old post, but if IE is giving you trouble. Change your GET requests to POST and IE will no longer cache them.

I spent way too much time figuring this out the hard way. Hope it helps.

Upvotes: -4

DRK
DRK

Reputation: 324

Here is an answer proposal:

http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/

The idea is to add a parameter to your ajax query containing for example the current date an time, so the browser will not be able to cache it.

Have a look on the link, it is well explained.

Upvotes: 6

Koss
Koss

Reputation: 1012

If you set unique parameters, then the cache does not work, for example:

$.ajax({
    url : "my_url",
    data : {
        'uniq_param' : (new Date()).getTime(),
        //other data
    }});

Upvotes: 23

user407283
user407283

Reputation:

Cache-Control: no-cache, no-store

These two header values can be combined to get the required effect on both IE and Firefox

Upvotes: 13

Nick Craver
Nick Craver

Reputation: 630607

You can disable caching globally using $.ajaxSetup(), for example:

$.ajaxSetup({ cache: false });

This appends a timestamp to the querystring when making the request. To turn cache off for a particular $.ajax() call, set cache: false on it locally, like this:

$.ajax({
  cache: false,
  //other options...
});

Upvotes: 534

Related Questions