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();//这就是增加的随机时间函数,是用来向浏览器说明每次的请求是不一样的,就利用了随机函数,不一样的请求就不会有缓存,则可以做到时时访问。
在默认情况下,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();//这就是增加的随机时间函数,是用来向浏览器说明每次的请求是不一样的,就利用了随机函数,不一样的请求就不会有缓存,则可以做到时时访问。
相关文章推荐
- Ajax的get请求在IE浏览器中乱码问题的解决方案
- IE浏览器发送get请求时的缓存问题的解决方式
- IE浏览器下使用AJAX登陆接口请求缓存与登陆不了的问题解决
- IE浏览器缓存Ajax请求之后不更新数据问题
- ie浏览器下,get请求缓存问题
- ajax在IE浏览器中请求的数据不正确,缓存问题
- IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法
- ajax请求get方式的缓存问题
- Ajax请求缓存问题、中文乱码问题、跨域问题
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- ajax请求时的缓存问题
- jQuery发送ajax请求,IE有缓存,数据不更新问题
- IE中ajax+jsp登录界面,由于缓存导致jsp过滤器与ajax请求被拦截的问题和解决
- Ajax中请求被缓存的问题
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- Ajax 在IE浏览器中的缓存问题
- IE对jQuery的get请求有缓存问题及解决办法
- 关于ajax请求在IE6,9下的缓存问题
- 如何解决Ajax请求结果的缓存问题说明
- Ajax在基于IE浏览器中的缓存问题