web-dev-qa-db-ja.com

Internet ExplorerでjQuery Ajaxリクエストがキャッシュされないようにする方法

JQuery AjaxリクエストがInternet Explorerでキャッシュされないようにするにはどうすればよいですか?

261
SABU

たとえば、 $.ajaxSetup() を使用して、キャッシュをグローバルに無効にすることができます。

$.ajaxSetup({ cache: false });

これは、リクエストを行うときにクエリ文字列にタイムスタンプを追加します。特定の $.ajax() 呼び出しに対してキャッシュを無効にするには、次のようにローカルでcache: falseを設定します。

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

一意のパラメータを設定した場合、キャッシュは機能しません。次に例を示します。

$.ajax({
    url : "my_url",
    data : {
        'uniq_param' : (new Date()).getTime(),
        //other data
    }});
21
Koss
Cache-Control: no-cache, no-store

これら2つのヘッダ値は、IEとFirefoxの両方に必要な効果を得るために組み合わせることができます。

12
user407283

これが答えの提案です。

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

アイデアは、例えば現在の日付を含むパラメータをあなたのajaxクエリに追加することです。そうすればブラウザはそれをキャッシュすることができないでしょう。

リンクを見てください、それはよく説明されています。

5
DRK

このように定義することができます:

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})

それが役に立てば幸い

0
Fajar A. R