jquery - 强制ajax调用清除缓存

标签 jquery ajax caching xmlhttprequest clear-cache

我有一个 cms,可以在其中更改对象的位置。每次位置更改后,ajax 调用都会更新整个对象列表。但不幸的是,一些数据存储在缓存中,并且没有可见的更改。有没有办法用 javascript/request/other 强制清除缓存?我已在 $.ajax 中尝试过“cache: false”,但它不起作用。

这是一个示例页面:

http://ntt.vipserv.org/manage/playforward

还有我的js:

$(".object-position").livequery("change", function() {
    $("#objects-list input").attr('disabled', true);
    var action = $(this).attr('name');
    var position = $(this).attr('value');
    var id = $(this).attr("id");
    var model = id.split("-")[0];
    var object_id = id.split("-")[1];

    $("#loader").show();
    $("#loader").fadeIn(200);

    $.ajax({
        type: "POST",
        async: true,
        url: "/manage/update_position/",
        data: "action=" + action + "&model=" + model + "&object_id=" + object_id + "&position=" + position,
        dataType: "json",
        success: function(data){
            $("#loader").fadeOut("fast", function () {
                $("#loader").hide();
            });
            $("objects-list").html(data["html"]);
            $("#message").show();
            $("#message").fadeIn(400).html('<span>'+data["message"]+'</span>');
            setTimeout(function(){
                $("#message").fadeOut("slow", function () {
                    $("#message").hide();
                });
            }, 1500); 
        }
    });
    $("#objects-list input").attr("disabled", false);
    return false;
});

最佳答案

cache: false 的作用是将时间添加到请求数据中,因此每个请求实际上都是唯一的,因此绕过了浏览器的缓存。我想知道您使用数据字符串而不是对象的事实是否导致了这里的问题。尝试使用对象代替:

$.ajax({
    type: "POST",
    async: true,
    url: "/manage/update_position/",
    data: {
        "action": action.
        "model": model,
        "object_id": object_id,
        "position": position
    },
    cache: false,
    dataType: "json",
    success: function(data){
        //[snip]
    }
});

关于jquery - 强制ajax调用清除缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4060287/

相关文章:

jquery - 一旦未折叠的 Rails, Bootstrap 导航栏链接不可点击

javascript - 获取元素的 Id

php - 单击取消按钮后如何删除数据库行

javascript/jquery - $(document).ready() 和脚本位置

javascript - 通过 Ajax 在 Grails 中执行 Controller 功能

java - Guava 缓存的复杂键(移位)

ruby-on-rails - Rails-caches_action expire_action

jquery - 隐藏输入值更改时未调用的函数 Jquery

ajax - 如何在ajax渲染父组件期间跳过子组件?

c# - 安排每天在特定时间刷新 HttpContext.Cache 的任务