ajax请求get方式的缓存问题
2015-11-05 19:20
232 查看
问题描述:
浏览器访问中,在当前页面跳转到另外个页面,然后返回。用get方式请求数据,返回后ajax不再请求url,直接取ajax缓存中的数据。
原因及解决办法
在ie系列下,$.get()方法在url地址固定时,会缓存返回结果,导致不可预料的问题。但在火狐下,则不会缓存。
要解决该问题有很多办法,最直接的是把$.get()方法换成$.ajax(),然后配置cache:false即可。我不喜欢$.ajax()繁琐的配置方式,可采取以下最简单方式实现:
在$.get()的data后面加上新的随机参数,如{data:mydata, stamp: Math.random() },由于每次数据不一样,故请求后返回的数据不会缓存。
另外也可把$.get()改成$.post(),也可解决此问题。
一劳永逸的解决办法是设置全局参数,$.ajaxSetup({cache:false});这样设置后,基本所有的get请求jquery都会自动加上_1948838字样的附加参数,总体来说与上面的解决方法类似。
例如:
$.get("ProvinceListByCountryIDHandler.ashx", {"cid": $drpCountry.val(), "time": new Date().getTime() },function(data, returnStatus) {})。
浏览器访问中,在当前页面跳转到另外个页面,然后返回。用get方式请求数据,返回后ajax不再请求url,直接取ajax缓存中的数据。
原因及解决办法
在ie系列下,$.get()方法在url地址固定时,会缓存返回结果,导致不可预料的问题。但在火狐下,则不会缓存。
要解决该问题有很多办法,最直接的是把$.get()方法换成$.ajax(),然后配置cache:false即可。我不喜欢$.ajax()繁琐的配置方式,可采取以下最简单方式实现:
在$.get()的data后面加上新的随机参数,如{data:mydata, stamp: Math.random() },由于每次数据不一样,故请求后返回的数据不会缓存。
另外也可把$.get()改成$.post(),也可解决此问题。
一劳永逸的解决办法是设置全局参数,$.ajaxSetup({cache:false});这样设置后,基本所有的get请求jquery都会自动加上_1948838字样的附加参数,总体来说与上面的解决方法类似。
例如:
$.get("ProvinceListByCountryIDHandler.ashx", {"cid": $drpCountry.val(), "time": new Date().getTime() },function(data, returnStatus) {})。
相关文章推荐
- Android 中Handler
- Objective-C——类别(Category)详解
- 4412最小文件系统和编译环境配置
- 收集的35个 jQuery 小技巧/代码片段,可以帮你快速开发.
- iOS项目上传到AppStore步骤流程
- 黑马程序员——高新技术----反射
- Linux程序之线程轮询
- GLSL Optimizer
- java面向对象9
- 八大排序算法之简单选择排序
- Objective-C 编程语言官网文档(五)-属性的声明
- 第四周第三天OC第四讲
- 内存分配以及指针处理的相关测试代码
- oracle归档的开启及关闭
- Linux软件安装与管理
- Dialog主题Activity实现自定义对话框效果
- 【小结】中缀表达式转后缀表达式
- SSH远程管理、参数讲解、xshell使用、scp,sftp,ssh命令(ssh两种方式的密钥验证方
- java面向对象8
- Generating Shaders From HLSL Fragments