如何防止在Internet Explorer中缓存jQuery Ajax请求?

时间:2010-11-29 12:47:19

标签: jquery internet-explorer

如何在Internet Explorer中阻止jQuery Ajax请求缓存?

6 个答案:

答案 0 :(得分:505)

您可以使用$.ajaxSetup()全局禁用缓存,例如:

$.ajaxSetup({ cache: false });

这会在发出请求时向查询字符串附加时间戳。要为特定$.ajax()电话关闭缓存,请在本地设置cache: false,如下所示:

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

答案 1 :(得分:21)

如果设置了唯一参数,则缓存不起作用,例如:

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

答案 2 :(得分:12)

Cache-Control: no-cache, no-store

可以组合这两个标头值以在IE和Firefox上获得所需的效果

答案 3 :(得分:5)

以下是答案提案:

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

我们的想法是在ajax查询中添加一个参数,例如包含当前日期的时间,因此浏览器将无法对其进行缓存。

看看链接,这是很好的解释。

答案 4 :(得分:0)

您可以这样定义它:

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

希望有帮助

答案 5 :(得分:-3)

这是一篇旧帖子,但如果IE给你带来麻烦。将您的GET请求更改为POST,IE将不再缓存它们。

我花费了太多时间来解决这个问题。希望它有所帮助。