博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决$.getJSON在IE浏览器下出现数据缓存,第一次访问某个后台路径之后,再次访问该路径不再走后台的方法。...
阅读量:4333 次
发布时间:2019-06-07

本文共 2328 字,大约阅读时间需要 7 分钟。

最近写代码的时候遇到一个小问题,我用的是火狐,项目里测试人员用的是IE,当用jquery的getjson函数从后台获取数据的时候,IE浏览器会自动设置缓存,如果此时你对数据进行修改的时候刷新页面,IE并不会在页面显 示你修改后的数据,因为你刷新的时候IE浏览器会查找缓存并显示你修改前的数据,试了一些方法未果,最后在网上查了些资料终于解决了IE浏览器下的问题。

例如我们在IE浏览器中使用$.getJSON执行删除数据的操作,我们第一次执行删除数据的操作,操作成功,我们第二次或以后再次执行删除数据的操作,操作不成功,数据没有被删除。原因是$.getJSON在IE浏览器下默认会使用浏览器缓存,所以第二次之后不再访问删除数据的后台方法,所以数据没有被删除成功。解决方法如下:

1.$.getJSON是简写的 Ajax 函数,使用$.ajax代替改函数即解决。

$.ajax(webContext+"/ecs/ecs_detachCloudDisk.action?id="+id, function(json){                        if(json.success){                            Alert("实例("+instanceId+")下的磁盘("+diskid+")卸载成功!");                            $('#datadisk_list').datagrid("reload");                        }else{                            Alert("实例("+instanceId+")下的磁盘("+diskid+")卸载失败!");                        }                    });

开始我是直接这样写的:

$.getJSON(webContext+"/ecs/ecs_detachCloudDisk.action?id="+id, function(json){                        if(json.success){                            Alert("实例("+instanceId+")下的磁盘("+diskid+")卸载成功!");                            $('#datadisk_list').datagrid("reload");                        }else{                            Alert("实例("+instanceId+")下的磁盘("+diskid+")卸载失败!");                        }                    });

2.在你的请求的URL 后面设置个可变的参数(可以是时间,也可以是一个随机数,只要是一个随时可变的参数即可),比如:

$.getJSON(webContext+"/ecs/ecs_detachCloudDisk.action?id="+id+"&time="+new Date().getTime(), function(json){                        if(json.success){                            Alert("实例("+instanceId+")下的磁盘("+diskid+")卸载成功!");                            $('#datadisk_list').datagrid("reload");                        }else{                            Alert("实例("+instanceId+")下的磁盘("+diskid+")卸载失败!");                        }                    });

 

开始我是直接这样写的(没有加"&time="+new Date().getTime()):

$.getJSON(webContext+"/ecs/ecs_detachCloudDisk.action?id="+id, function(json){                        if(json.success){                            Alert("实例("+instanceId+")下的磁盘("+diskid+")卸载成功!");                            $('#datadisk_list').datagrid("reload");                        }else{                            Alert("实例("+instanceId+")下的磁盘("+diskid+")卸载失败!");                        }                    });

 补充:

后来我用$.ajax方式的访问在IE浏览器下也会出现上面所说的缓存问题,解决方式是建议在URL 后面也设置个可变的参数,这样就可以解决了。

转载于:https://www.cnblogs.com/longshiyVip/p/4543677.html

你可能感兴趣的文章
linux安装php-redis扩展(转)
查看>>
Vue集成微信开发趟坑:公众号以及JSSDK相关
查看>>
技术分析淘宝的超卖宝贝
查看>>
i++和++1
查看>>
react.js
查看>>
P1313 计算系数
查看>>
NSString的长度比较方法(一)
查看>>
Azure云服务托管恶意软件
查看>>
My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包
查看>>
旧的起点(开园说明)
查看>>
生产订单“生产线别”带入生产入库单
查看>>
crontab导致磁盘空间满问题的解决
查看>>
java基础 第十一章(多态、抽象类、接口、包装类、String)
查看>>
Hadoop 服务器配置的副本数量 管不了客户端
查看>>
欧建新之死
查看>>
自定义滚动条
查看>>
APP开发手记01(app与web的困惑)
查看>>
笛卡尔遗传规划Cartesian Genetic Programming (CGP)简单理解(1)
查看>>
mysql 日期时间运算函数(转)
查看>>
初识前端作业1
查看>>