当前位置: 首页 > 图文教程 > 网络编程 > AJAX技术 > Ajax 超时检查脚本

AJAX技术
AJAX教程(5):AJAX-XMLHttpRequest 对象
AJAX教程(6):AJAX - 请求服务器
AJAX教程(7):AJAX - 服务器端的脚本
AJAX教程(8):AJAX 请求实例
AJAX教程(9):AJAX 请求 源代码
AJAX教程(10):AJAX 数据库实例
AJAX教程(11):AJAX XML 实例
AJAX教程(12):AJAX ResponseXML 实例
AJAX教程(13):通过XMLHTTP把文本文件载入HTML元素
AJAX教程(14):通过XMLHTTP加载XML文件
AJAX教程(15):通过XMLHTTP进行一次HEAD请求
AJAX教程(16):通过XMLHTTP进行一次指定的HEAD请求
AJAX教程(17):把XML文件显示为HTML表格
PHP+AJAX教程(1):AJAX 简介
PHP+AJAX教程(2):AJAX XMLHttpRequest
PHP+AJAX教程(3):PHP和AJAX请求
PHP+AJAX教程(4):PHP和AJAX XML实例
PHP+AJAX教程(5):AJAX MySQL数据库实例
PHP+AJAX教程(6):AJAX responseXML实例
PHP+AJAX教程(7):AJAX Live Search

AJAX技术 中的 Ajax 超时检查脚本


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 51 ::
收藏到网摘: n/a

检查Ajax 是否超时的脚本代码
复制代码 代码如下:

<script type="text/javascript">
function Ajax(){
var xhr;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else{
try{xhr=new ActiveXObject("MSXML2.XMLHTTP.6.0");}catch(e){}
try{xhr=new ActiveXObject("MSXML2.XMLHTTP");}catch(e){}
}
if(!xhr) return;
this.Xhr=xhr; //用属性存储XMLHttpRequest对象的实例
}
Ajax.prototype.send=function(url,options){
if(!this.Xhr) return;
var xhr=this.Xhr;
var aborted=false;
var _options={ //提供默认值
method:"GET",
timeout:5000,
onerror:function(){},
onsuccess:function(){}
};
for(var o in options){ //覆盖掉原来的默认值
_options[o]=options[o];
}
function checkForTimeout(){ //检查是否超时的情况
if(xhr.readyState!=4){
aborted=true;
xhr.abort(); //取消本次传输
}
}
//在规定的时间内检查readyState属性的值
setTimeout(checkForTimeout,_options.timeout);
function onreadystateCallback(){
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);
}
var ajax=new Ajax();
ajax.send("test.php",{method: GET ,timeout:100,onerror:onerror,onsuccess:onsuccess});
function onerror(xhr){
alert("Timeout");
}
function onsuccess(xhr){
alert(xhr.responseText);
}
</script>