解决$.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+")卸载失败!");
}
});
补充:
后来我用$.ajax方式的访问在IE浏览器下也会出现上面所说的缓存问题,解决方式是建议在URL 后面也设置个可变的参数,这样就可以解决了。
解决$.getJSON在IE浏览器下出现数据缓存,第一次访问某个后台路径之后,再次访问该路径不再走后台的方法。的更多相关文章
- (转)如何让ActiveXObject( "Microsoft.XmlDom ")对象在非IE浏览器下显示数据?firefox(火狐)
如何让ActiveXObject( "Microsoft.XmlDom ")对象在非IE浏览器下显示数据?firefox(火狐) 2013-09-10 16:01 2152人阅读 ...
- chrome浏览器的跨域设置 Google Chrome浏览器下开启禁用缓存和js跨域限制--disable-web-security
chrome用户默认路径 Win7:C:\Users\[用户名]\AppData\Local\Google\Chrome\User Data\XP:C:\Documents and Settings\ ...
- Angularjs在360兼容模式下取数据缓存问题解决办法
测试提了一个bug,在360浏览器兼容模式下,删除页面数据需要手动刷新浏览器才能看到最新的数据.首先要复现当时的问题,很容易就复现了,但是发现在360浏览器兼容模式下无法打开开发者工具.好在经过反复重 ...
- IE浏览器下ajax和缓存的那些事儿
项目经理最近返回了一些问题: (客户浏览器为IE11,本地360,谷歌没发现任何问题) 1.加载页面时下拉框中没有数据,关闭之后再打开出现数据: 2.数据保存之后页面没有刷新: 我也是接手别人的项目, ...
- jQuery源码解读 - 数据缓存系统:jQuery.data
jQuery在1.2后引入jQuery.data(数据缓存系统),主要的作用是让一组自定义的数据可以DOM元素相关联——浅显的说:就是让一个对象和一组数据一对一的关联. 一组和Element相关的数据 ...
- jQuery1.9.1源码分析--数据缓存Data模块
jQuery1.9.1源码分析--数据缓存Data模块 阅读目录 jQuery API中Data的基本使用方法介绍 jQuery.acceptData(elem)源码分析 jQuery.data(el ...
- ecshop二次开发系统缓存优化之扩展数据缓存的必要性与方法
1.扩展数据缓存的必要性 大家都知道ecshop系统使用的是静态模板缓存,在后台可以设置静态模板的缓存时间,只要缓存不过期,用户访问页面就相当于访问静态页面,速度可想而知,看似非常完美,但是ecsho ...
- Redis数据缓存淘汰策略【FIFO 、LRU、LFU】
FIFO.LFU.LRU FIFO:先进先出算法 FIFO(First in First out),先进先出.在FIFO Cache设计中,核心原则就是:如果一个数据最先进入缓存中,则应该最早淘汰掉. ...
- IE浏览器下ajax缓存导致数据不更新的解决方法
摘自:http://www.iefans.net/ie-ajax-json-shuju-huancun/ 最近做设计的时候遇到一个小问题,当你用jquery的getjson函数从后台获取数据的时候,I ...
随机推荐
- iOS block 的底层实现
其实swift 的闭包跟 OC的block 是一样一样的,学会了block,你swift里边的闭包就会无师自通. 参考:http://www.jianshu.com/p/e23078c11518 ht ...
- 启动Eclipse弹出:Failed to load JavaHL Library 错误框的解决办法
一.问题背景描述: eclipse安装完svn插件以后,在启动时出现:Failed to load JavaHL Library. These are the errors that were en ...
- 阻塞队列BlockingQueue 学习
import java.util.Random; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Time ...
- XSLT教程
XSL 指扩展样式表语言(EXtensible Stylesheet Language), 它是一个 XML 文档的样式表语言. XSLT 指 XSL 转换.即使用 XSLT 将 XML 文档转换为其 ...
- 128. Longest Consecutive Sequence(leetcode)
Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...
- NYOJ题目822画图
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtUAAAHzCAIAAABgzHaKAAAgAElEQVR4nO3dPVLjzBoG0LsJ514IsR
- 最近360和adsafe软件有冲突
360把adsafe自启动服务给关闭,所以每次启动都不能成功.
- max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
sh- /etc/sysctl.conf vm.max_map_count = #在/etc/sysctl.conf追加上面一条 #并执行命令: sysctl -p
- C#学习笔记----.net操作进程
进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.进程之间是相对独立的,一个进程无法直接访问另一个进程的数据(除非分布式),一个进程运行的失败也不会影响其他 ...
- react.js 多个组件集成示例
这个看得有点懵, 可能要结合其它实例看. html <!DOCTYPE html> <html> <head> <script src="http: ...