将jQuery $ .post()中的缓存设置为false?
我有这个代码:
$.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
未缓存。
使用POST获取的页面永远不会被缓存,因此jQuery.ajaxSetup()中的缓存和ifModified选项对这些请求没有影响。
来自http://api.jquery.com/jQuery.post/
部分正确,丹尼尔A.怀特 !
在运行iOS6和Safari的设备上,POST也会被缓存。
你能做的是以下几点:
$.ajaxSetup({ type: 'POST', headers: { "cache-control": "no-cache" } });
你提到$ .ajax
您可以像这样关闭ajax的缓存:
$.ajax({ url: "/myURL?", cache: false, });
这是一个老问题,似乎不时出现,我总是摸不着头脑。 这个解决方案解决了这个问题,但它可能并不适用于所有情况,因为它实际上禁用了AJAX的一个关键特性 – 异步function。 对于我遇到过这个问题的情况说法和做了 – Apple产品和Safari我特别关注你 – 在你的jQuery AJAX请求中设置async:false
的附加参数修复了这个问题并且实际上解决了“No Alert on on发布回调“问题。
正如我所说,如果你完全依赖于异步function,那么这对你没有帮助,但对于很多项目来说,它会阻止你拉扯你的头发。
$.ajax({ type: 'POST', url: url, data: data, success: success, dataType: dataType, async:false });