主页 > 前端 > javascript >
来源:自学PHP网 时间:2014-09-19 14:47 作者: 阅读:次
[导读] ajax get默认情况下一般会产生一些缓存数据了,如果我们要禁止其创建缓存可以加上禁止缓存或在url后面带一个随机参数就可解决ie缓存与ajax缓存问题了。...
IE 浏览器,网站 不能正常登陆和退出。 这就怪异了。之前比较忽略IE。用火狐谷歌测试都是好的。 经过反复排查,终于发现了问题所在。 我使用的是jquery get方法获取 在ie上就产生了缓存,我用ie debug检查工具检查一下 缓存后 数据就更新了。说了也不清楚。。后来我改成post就好了, 还有一个方法就是 get的时候传递一个变量值到服务端。也可以解决此问题。
1: 在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数 在javascript发送的URL后加上t=Math.random()
另:百度到的资料 ———————– 昨天在用prototype的ajax到业务逻辑取数据时发现,每次新开启浏览器可正常显示数据库更新后的结果,如果刷新浏览器是不会变化的. 但是删除IE临时文件后再刷新就可以正常显示. 由此,我断定可能是IE会缓存ajax请求返回的数据. 查了一些资料发现普遍反映ajax的get方式会缓存,并且有网友提出了解决办法: 1、在服务端加 header(“Cache-Control: no-cache, must-revalidate”); 2、在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“If-Modified-Since”,”0″); 3、在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“Cache-Control”,”no-cache”); 4、在 Ajax 的 URL 参数后加上 “?fresh=” + Math.random(); //当然这里参数 fresh 可以任意取了 5、第四种方法和第三种类似,在 URL 参数后加上 “?timestamp=” + new Date().getTime(); 6、用POST替代GET:不推荐 对于以上几点,我还是不满意的, 1的情形,在服务端加,这个问题是ajax搞出来的,应该由它来解决,不管服务端的事; 对于这个问题的解决,要在prototype的前提下.查阅prototype的文档,可以看到有一个requestHeaders选项,它就是负责处理 请求的头部信息的,上面的方法里也提到在头信息里进行no cache设置,所以我们就把这个选项设置一下就行了.只需在prototype的ajax配置里加一句就行了:
例子:
jsp代码
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com