解决jquery load,get 方法缓存数据问题

当jquery load一个页面时候,只加载一次。

解决方法有两种:

1. jQuery提供一个防止ajax使用缓存的方法,

<scripttype="text/javascript"language="javascript">
    $.ajaxSetup({
        cache:false  //closeAJAXcache
    });
</script>

这个方法在每次load页面的时候都要执行一次, 否则只会再第一次时候有效其他load还会读取缓存页面

2. 第二就是修改load加载的url地址

例如再url多加个时间参数就可以这个方法再wap1.0中我也用过避免读取缓存

还有就是之前查到的其他两种办法,针对该问题,不起作用:
1、设置html的缓存
<METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
<METAHTTP-EQUIV="Expires"CONTENT="0">

2、java设置缓存
<%
    request.setAttribute("decorator","none");
    response.setHeader("Cache-Control","no-cache");   //HTTP1.1
    response.setHeader("Pragma","no-cache");   //HTTP1.0
    response.setDateHeader("Expires",0);   //preventscachingattheproxyserver
%>
<prename="code" class="java"> 

Jquery $.get方法缓存问题
在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":newDate().getTime()},function(data,returnStatus){})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值