首先,在这里,我不会 对ajax异步更新的概念什么的进行解释,主要通过下面的框架,进行解释,并且解决常见的浏览器缓存问题
<script type="text/javascript">
function ajax(url,fnSuccess,fnEnd){
if(window.XMLHttpRequest)
{
var oAjax=new XMLHttpRequest();
}
else{
var oAjax=new ActiveXObject("Microsoft.XMLHTTP");
}
//链接服务器
oAjax.open("GET",url,true);
//发送请求
oAjax.send();
//接收返回
oAjax.onreadystatechange=function(){
if(oAjax.readyState==4) //读取完成
{
if(oAjax.status==200) //读取成功
{
fnSuccess(oAjax.responseText);
}else{
if(fnEnd)
{fnEnd(oAjax.status);}
}
}
};
}
window.οnlοad=function(){
var oBtn=document.getElementById('a');
oBtn.click=function(){
ajax('a.txt?='+new Date().getTime(),function(str){});
};
};
</script>
在上面的代码中,我对ajax的主体部分进行了一个函数的封装,变为之传递三个参数,分别为要读取的文件url,第二个在是读取成功的时候调用的函数,第三则是失败时执行的行数;
而ajax函数体中的,首先进行一个兼容性的判定,主要是为了兼容低版本ie为进行XMLHttpRequest 的定义,而执行else部门,在这里我们需要主要的是里面的window对象;
由于低版本ie中未定义XMLHttpRequest,而任何对象属性都可以是window对象的属性,所以相当于我们对之进行了定义,要不然低版本ie会报错;
oAjax.open()该函数可接受三个参数,第一个为请求的方式(GET或POST),第二个为要打开的文件,第三个true 或flase,表示是否异步执行;
后面的由于时间关系就不多解释了
跟着在为点击时间添加函数体的时候,我们可以看到'a.txt?='+new Date().getTime(),这部分只要是通过不断的获取一个时间戳来进行页面的刷新,解决缓存带来的问题/