IE9 下的ajax缓存问题的处理

使用jQuery的getJSON从后台定时获取数据并刷新界面,使用以下方法时,在Chrome,Firefox下没问题,但在IE9下却无法刷新数据


1

2

3

4

5

$.getJSON(webApp + "/GetShowData.do?limit=" + limit,function(data){

  //******************

}

原因是,在IE9下,进行Ajax请求时,若与之前请求相同,则不会再从浏览器获取数据,而是直接从本地获取,因此,在请求中加上时间戳,IE9便会认为是不同的请求,代码如下:


1

2

3

4

5

$.getJSON(webApp + "/GetHccShowData.do?" + new Date().getTime() + "limit=" + Hcc.limit,function(data){

  //******************

}

  

此外,也可以使用以下方法:

Hcc.limit = Hcc.limit || 15;

$.ajax({
    type:"GET",
    url:webApp + "/GetHccShowData.do?" + "limit=" + Hcc.limit,
    cache:false,
    async:false,
    dataType:"json",
    success:function(data){
                Hcc.ShowData = data;
         /**          * 处理代码          ***/
                data = null;
    }
});

cache:配置为false时,表示不从浏览器缓存中获取数据,调试时可以看到,发Get请求时,会自动加上时间戳

时间: 2024-08-02 19:12:23

IE9 下的ajax缓存问题的处理的相关文章

IE8,9下的ajax缓存问题

最近在做一个网站的登录注册框,前端使用了jquery.由于sign和login不是在单独的页面上,而是以一个弹出框出现.所以决定使用ajax来实现注册和登录功能.本以为可以一帆风顺,结果在测试的时候发现了奇怪的问题. 在用chrome , ff , IE10+测试的时候基本没问题,但在IE8,9上运行时却出现了输入正确的用户名和密码不能登录的情况.一开始还以为是session丢失了,开始吐槽后台的框架. 但是在耐心的调试后,发现session并没有丢失.这下可急死我了,难道混了这么久连一个注册登

IE下的ajax缓存

IE默认会在ajax请求时缓存所有的信息,通常这种情况是不合理的. 解决办法: 在每次ajax请求的时候,在url后面加上字符,避免缓存 jQuery.ajax({ url: today_lottery_url+'?'+ new Date().toTimeString(), type: 'GET', dataType: 'json' }).done(function(data_t) { //Do something }

IE浏览器下ajax缓存导致数据不更新的解决方法

摘自:http://www.iefans.net/ie-ajax-json-shuju-huancun/ 最近做设计的时候遇到一个小问题,当你用jquery的getjson函数从后台获取数据的时候,IE浏览器会自动设置缓存,如果此时你对数据进行修改的时候刷新页面,IE并不会在页面显示你修改后的数据,因为你刷新的时候IE浏览器会查找缓存并显示你修改前的数据,最后在网上查了些资料终于解决了IE浏览器下的问题. 方法就是在你的请求的URL 后面设置个可变的参数,比如: Java代码 $.getJSON

ajax缓存和fiddler——http协议调试代理工具

1.在ie9下,ajax请求可能会有缓存,需要在请求上一个随机数 如:Math.random(); 2.fiddler2 打开以后可以查看所有的http请求情况,也可以使用本地脚本代替要请求的js文件,实现在线调试. 刷新网页--查看AutoResponder --选中所有--点击要请求的文件--add Rule --在rule editor 中选择add File,选择本地文件--然后就可以实现调试. 原文地址:https://www.cnblogs.com/fanyegong/p/36583

IE9下JQuery发送ajax请求失效

最近在做项目的时候,测试PC端网页,在IE9下会失效,不能正常的发送POST请求,经过仔细的排查,发现是IE9下JQuery发送ajax存在跨域问题. 目前有两种解决方案:   解决方案一: 设置浏览器安全属性,启用[通过域访问数据源]选项,如下图所示:    解决方案二:  调用ajax方法时,设置crossDomain为true,如下图所示: <!DOCTYPE html> <html> <head> <title>jQuery CORS in IE7

IE浏览器下AJAX缓存问题导致数据不更新的解决办法

一直知道使用ajax的时候,有的时候会出现数据缓存的问题,当时也没有深究,就是所有的简单粗暴的全部加上cache:false,或者使用在url处加上随机时间函数 今天无意间看见了为什么会出现缓存的原因记录下 注:通过AJAX请求后台时,当参数相同,IE浏览器会从缓存中取值而非从重新请求服务器.其他使用非IE内核的浏览器并无此问题. 在IE下用Ajax请求某一页面,通常会因为缓存的原因而返回上一次的结果,造成混乱, 即get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会

比较全的Ajax缓存问题汇总

项目有时要用一些Ajax的效果,因为比较简单,也就没有去用什么Ajax.net之类的东西,手写代码也就实现了.第二天,有人向我报告错误:说是只有第一次读取的值正常,后面的值都不正常:我调试了一下 ,确实有这样的问题,查出是因为AJAX缓存的问题.解决办法有如下几种:澳门赌场有哪些 在服务端加 header("Cache-Control: no-cache, must-revalidate");(如php中) 在ajax发送请求前加上 anyAjaxObj.setRequestHeade

对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache

虽然jquery的较新的api已经很好用了, 但是在实际工作还是有做二次封装的必要,好处有:1,二次封装后的API更加简洁,更符合个人的使用习惯:2,可以对ajax操作做一些统一处理,比如追加随机数或其它参数.同时在工作中,我们还会发现,有一些ajax请求的数据,对实时性要求不高,即使我们把第一次请求到的这些数据缓存起来,然后当相同请求再次发起时直接拿之前缓存的数据返回也不会对相关功能有影响,通过这种手工的缓存控制,减少了ajax请求,多多少少也能帮助我们提高网页的性能.本文介绍我自己关于这两方

Ajax缓存解决办法【转】

项目有时要用一些Ajax的效果,因为比较简单,也就没有去用什么Ajax.net之类的东西,手写代码也就实现了.. 第二天,有人向我报告错误:说是只有第一次读取的值正常,后面的值都不正常:我调试了一下 ,确实有这样的问题,查出是因为AJAX缓存的问题:解决办法有如下几种:       1.在服务端加 header("Cache-Control: no-cache, must-revalidate");(如php中) 2.在ajax发送请求前加上 anyAjaxObj.setRequest