解决$.getJSON在IE浏览器下出现数据缓存,第一次访问某个后台路径之后,再次访问该路径不再走后台的方法。

最近写代码的时候遇到一个小问题,我用的是火狐,项目里测试人员用的是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+")卸载失败!");

                        }

                    });

 

你可能感兴趣的:(json)