jquery ajax cache:false不工作

时间:2014-03-29 20:29:34

标签: jquery ajax

我有一些信息,我可以编辑然后更新,然后我通过ajax获得更新的内容工作正常,但图像被缓存并且不会更改(图像具有相同的名称,如果是新图像上传它直接覆盖前一个。)

如果我那么刷新页面,我会看到新图像,如果我从那时起编辑和更新图像,它运行良好,但第一次始终是问题。更新内容后,我总是要手动页面刷新。

我的阿贾克斯:

$.ajax({
    type: "POST",
    async: true,
    url: vkrwps_admin.ajax_url,
    data: {
        action: 'EDIT_PROD',
        sv: sv,
        preload: vkrwps_admin.preloader
    },
    cache: false,
    beforeSend: function() {
        $('div.mule').html(u);
    },
    success: function(response) {
        $('div.mule').html(response);
        // call chosen on select
        $('select').chosen({
            // placeholder_text: "Choose a product..."
            'disable_search': true
        });
        // $('select.dropsearch').val(4).trigger('change');
    },
    complete: function() {
        // $('select.dropsearch').one().val(cf).trigger('change');
    }
});

我还尝试将以下内容放在脚本之上,但没有帮助:

$.ajaxSetup({ cache: false });

2 个答案:

答案 0 :(得分:2)

试试这样:

$.ajaxSetup({
    type: 'POST',
    headers: { "cache-control": "no-cache" }
});

您可以在the question找到更多解决方案。

答案 1 :(得分:1)

这不是ajax的响应所有需要缓存清除,它是图像,并且它在服务器上更新,但您仍然加载相同的URL,因此它不会在客户端更新。

尝试在图像中添加随机查询字符串以再次加载图像,在ajax成功函数中执行

       success: function(response){
            var r = (new Date()).getTime();

            $('div.mule').html(response).find('img').prop('src', function(_, src) {
                 return src + '?v=' + r;
            });

            $('select').chosen({
                // placeholder_text: "Choose a product..."
                'disable_search': true
            }); 
            // $('select.dropsearch').val(4).trigger('change');
        },