您的位置:首页 > 其它

IE浏览器下AJAX GET请求自动缓存带来的问题

2015-04-02 18:34 656 查看
1.问题说明:

在默认情况下,IE会针对请求地址缓存Ajax请求的结果。换句话说,在缓存过期之前,针对相同地址发起的多个Ajax请求,只有第一次会真正发送到服务端。在某些情况下,这种默认的缓存机制并不是我们希望的(比如获取实时数据)。

这次做的一个功能就是从网页上输入内容并且保存起来(实际上是保存在服务器上的TXT文件里),单击文件名称可以将保存的文件打开,即从文件中读取内容显示到页面上,按钮触发的点击函数是JS里边的,利用了AJAX GET请求,可是在IE浏览器下,每次都只能获取第一次输入的内容,以后修改文件内容后,再次读取还是第一次内容,无法获取到最新的文本内容(其他浏览器不会出现,火狐
360等)。经过了一番研究,终于发现是因为IE浏览器下,AJAX GET请求会自动缓存,像第一段中的问题那样。

下面来说说解决办法,从网上看到的:

在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数

在javascript发送的URL后加上t=Math.random()

例如这样:var url="XXX.php";

url=url+"?action="+encodeURI("opendir")+"&sid="+Math.random();//这就是增加的随机时间函数,是用来向浏览器说明每次的请求是不一样的,就利用了随机函数,不一样的请求就不会有缓存,则可以做到时时访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: