将jQuery $ .post()中的缓存设置为false?

Setting the cache in jQuery $.post() to be false?

我有这个代码:

1
2
3
$.post("php/tagNotifUnsub.php", $("#tagNotifUnsub").serialize(), function(){
            $('#tagSubDiv').load('tags.php #tagSubDiv', function(){$("button, input:submit, input:button, a#jql, input:radio" ).button();});      
        });

我知道$ .post只是$ .ajax的另一个名字。 我知道默认情况下$ .ajax有缓存。 我希望它被解除。 我怎样才能做到这一点?


$.post未缓存。

Pages fetched with POST are never
cached, so the cache and ifModified
options in jQuery.ajaxSetup() have no
effect on these requests.

来自http://api.jquery.com/jQuery.post/


部分正确,丹尼尔A.怀特!

在运行iOS6和Safari的设备上,POST也会被缓存。

你能做的是以下几点:

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


你提到$ .ajax

您可以像这样关闭ajax的缓存:

1
2
3
4
$.ajax({
        url:"/myURL?",
        cache: false,
    });


这是一个老问题,似乎不时出现,我总是摸不着头脑。这个解决方案解决了这个问题,但它可能并不适用于所有情况,因为它实际上禁用了AJAX的一个关键特性 - 异步功能。对于我遇到过这个问题的情况说法和做了 - Apple产品和Safari我特别关注你 - 在你的jQuery AJAX请求中设置async:false的附加参数修复了这个问题并且实际上解决了"没有警告"发布回调"问题。

正如我所说,如果你完全依赖于异步功能,那么这对你没有帮助,但是对于很多项目来说,它会阻止你拉扯你的头发。

1
2
3
4
5
6
7
8
$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType,
  async:false
});