zl程序教程

您现在的位置是:首页 >  前端

当前栏目

Ajax超时检查脚本

AJAX 脚本 检查 超时
2023-06-13 09:14:11 时间
复制代码代码如下:

<scripttype="text/javascript">
functionAjax(){
varxhr;
if(window.XMLHttpRequest){
xhr=newXMLHttpRequest();
}else{
try{xhr=newActiveXObject("MSXML2.XMLHTTP.6.0");}catch(e){}
try{xhr=newActiveXObject("MSXML2.XMLHTTP");}catch(e){}
}
if(!xhr)return;
this.Xhr=xhr;//用属性存储XMLHttpRequest对象的实例
}
Ajax.prototype.send=function(url,options){
if(!this.Xhr)return;
varxhr=this.Xhr;
varaborted=false;
var_options={//提供默认值
method:"GET",
timeout:5000,
onerror:function(){},
onsuccess:function(){}
};
for(varoinoptions){//覆盖掉原来的默认值
_options[o]=options[o];
}
functioncheckForTimeout(){//检查是否超时的情况
if(xhr.readyState!=4){
aborted=true;
xhr.abort();//取消本次传输
}
}
//在规定的时间内检查readyState属性的值
setTimeout(checkForTimeout,_options.timeout);
functiononreadystateCallback(){
if(xhr.readyState==4){
/*
*注释:状态码在200内表示成功,300内表示重定向,400内是客户端错误,500是服务器端错误
*/
if(!aborted&&xhr.status>=200&&xhr.status<300){//检查aborted属性是否超时
_options.onsuccess(xhr);
}else{
_options.onerror(xhr);
}
}
}
xhr.open(_options.method,url,true);
xhr.onreadystatechange=onreadystateCallback;
xhr.send(null);
}
varajax=newAjax();
ajax.send("test.php",{method:GET,timeout:100,onerror:onerror,onsuccess:onsuccess});
functiononerror(xhr){
alert("Timeout");
}
functiononsuccess(xhr){
alert(xhr.responseText);
}
</script>