解决ajax更新不及时的途径

在电信做的小灵通短信订餐系统中,有几个页面要用到三级联动下拉框,为了使用户体验更好,使服务器缓解一定压力,我决定使用AJAX来完成这个功能,可是我却粗心大意,漏掉了一个环节,使得ajax从数据库里读取数据不能及时更新.这是因为浏览器的缓存机制.

有4种方法可以解决这个问题:

1.在请求的URL后面加一个时间参数,如:time=new date();当然也可以添加其他性质参数,只要是随机参数就可以,open("GET",url+"?t="+Math.random(),false).或者url+"?timeStamp="+new Date().getTime();

2.

js 代码
  1. function ajaxRead(file){   
  2.       var xmlObj = null;   
  3.       if(window.XMLHttpRequest){   
  4.           xmlObj = new XMLHttpRequest();   
  5.       } else if(window.ActiveXObject){   
  6.           xmlObj = new ActiveXObject("Microsoft.XMLHTTP");   
  7.       } else {   
  8.           return;   
  9.       }   
  10.       xmlObj.onreadystatechange = function(){   
  11.         if(xmlObj.readyState == 4){   
  12.           processXML(xmlObj.responseXML);   
  13.         }   
  14.                 else{   
  15.                 document.getElementById ('playernews').innerHTML='采用AJAX来实现数据的读取,正在加载...';   
  16.                 }   
  17.       }   
  18.       xmlObj.open ('GET', file, true);   
  19.       xmlObj.send ('');   
  20.            
  21.     }   
  22.   
  23. function show() {   
  24. ajaxRead('*.jsp');   
  25. setInterval("ajaxRead('new.php')",30000);//自动更新   
  26. }   

 

3.加上xmlhttp.setRequestHeader("Cache-Control","no-cache");

4.在XmlHttpRequest发送请求之前加上XmlHttpRequest.setRequestHeader("If-Modified-Since","0"),如:在XXXXX.send(YYYYYY);之前

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值