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

时间:2011-04-04 18:31:43

标签: jquery

我有这段代码:

$.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有缓存。我希望它被解除。我怎么能这样做?

4 个答案:

答案 0 :(得分:30)

$.post未缓存。

  

使用POST获取的页面永远不会   缓存,所以缓存和ifModified   jQuery.ajaxSetup()中的选项没有   对这些要求的影响。

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

答案 1 :(得分:15)

Partly right, Daniel A. White

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

您可以做的是:

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

答案 2 :(得分:1)

你提到$ .ajax

你可以为这样的ajax关闭缓存:

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

答案 3 :(得分:0)

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

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

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType,
  async:false
});