ajax与数据库更新,[导入]解决Ajax与数据库数据变动同步问题

[以下是转文] Ajax从数据库里读取数据不能及时更新,这是因为浏览器的缓存机制。本文提出了四种解决办法。

以下是引用片段:

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

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

1.在请求的URL后面加一个时间参数,如:

time=new date()

当然也可以添加其他性质参数,只要是随机参数就可以,

open("GET",url+"?t="+Math.random(),false)

或者

url+"?timeStamp="+new Date().getTime();

2.

js 代码

function ajaxRead(file){

var xmlObj = null;

if(window.XMLHttpRequest){

xmlObj = new XMLHttpRequest();

} else if(window.ActiveXObject){

xmlObj = new ActiveXObject("Microsoft.XMLHTTP");

} else {

return;

}

xmlObj.onreadystatechange = function(){

if(xmlObj.readyState == 4){

processXML(xmlObj.responseXML);

}

else{

document.getElementById ('playernews').innerHTML='采用AJAX来实现数据的读取,正在加载...';

}

}

xmlObj.open ('GET', file, true);

xmlObj.send ('');

}

function show() {

ajaxRead('*.jsp');

setInterval("ajaxRead('new.php')",30000); //自动更新

}

3.加上

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

4.在XmlHttpRequest发送请求之前加上

XmlHttpRequest.setRequestHeader("If-Modified-Since","0"),

如:在

XXXXX.send(YYYYYY).

[以下是本人注释]

在使用prototype.js的时候,如果想使用方法3和4,需要这样写:

var myAjax = new Ajax.Request(

request_url,

{

method:'get',

requestHeaders: ['Cache-Control','no-cache','If-Modified-Since','0'],

parameters:request_pars,

asynchronous:true,       //true---异步;false---同步.默认为true

onComplete:processRequest

}

);

注意红色的代码部分,你可能注意到这是把3、4两种方法结合起来使用的。。。

好了,如果你是使用json的话,这个方法一样好用。

文章来源:http://x-spirit.spaces.live.com/Blog/cns!CC0B04AE126337C0!421.entry

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值