我有这段代码:
$.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有缓存。我希望它被解除。我怎么能这样做?
答案 0 :(得分:30)
$.post
未缓存。
使用POST获取的页面永远不会 缓存,所以缓存和ifModified jQuery.ajaxSetup()中的选项没有 对这些要求的影响。
答案 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
});