有人可以帮我这个吗?我有一个使用.manifest进行离线存储缓存的网页。在该页面中,我使用jQuery ajax调用从服务器获取数据。如果我先加载页面,就可以了。我可以在在线和离线之间切换。但问题是当我重新上线并刷新页面时。 jQuery ajax无法再与服务器通信了。有没有办法让ajax与服务器通信或清除脱机缓存?
我的ajax电话是这样的:
$.ajax({
type: "GET",
url: requestUrl,
success: localSuccess,
error: error,
dataType: "text",
cache:false
});
答案 0 :(得分:5)
我在每页/主页的顶部都有这段代码
//Disable caching in IE, becuase it's EVIL!
$(document).ready(function () {
$.ajaxSetup({ cache: false });
});
答案 1 :(得分:0)
将随机字符串放入url中,例如“get.php?random =”+ Math.random()“可以解决这个问题。这不是最好的解决方案,但效果很好。
答案 2 :(得分:0)
我知道我参加这个派对的时间非常晚,但只是把它放在那里。我很抱歉从僵尸的土地上复活这个问题。
在safari和一些较旧的浏览器中,(从我迄今为止经历过的,cache:false
似乎有时不起作用)。对于更多跨浏览器兼容的解决方案,您可以向ajax()调用添加数据选项,并添加随机数生成器作为参数。它会是这样的。
var callback = function () {
$.ajax({
type: "GET",
url: requestUrl,
success: localSuccess,
error: error,
dataType: "text",
//won't work sometimes
cache:false,
//start random number generator
data : { r: Math.random() }
//end random number generator
});
}
这样,每次发生服务器调用时,都会生成一个新的随机数,由于数据与先前的请求不同,因此ajax请求不会被缓存,并且每次都会确保新的服务器调用。在您的服务器中,您可以忽略此变量r
。