Ajax 超时检查脚本
更新时间:2009年07月21日 22:28:58 作者:
检查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>
相关文章
django使用ajax post数据出现403错误如何解决
在django中,使用jquery ajax post数据,会出现403的错误,该如何解决呢?下面由脚本之家小编帮大家解决django使用ajax post数据出现403错误,需要的朋友可以参考下2015-09-09重写 ajax 实现 session 超时跳转到登录页面实例代码
这篇文章主要介绍了重写 ajax 实现 session 超时跳转到登录页面实例代码,需要的朋友可以参考下2017-05-05Ajax请求过程中下载文件在FireFox(火狐)浏览器下的兼容问题
最近做了个项目,其中有项目需求是这样的,点击一个文件链接下载该文件,同时向后台发送请求,在开发过程中问题百出,小编把问题总结分享在脚本之家平台,供大家参考2016-01-01jquery中的ajax如何返回结果而非回调方式即为同顺序执行
默认ajax是异步的,也就是在未响应到结果时不影响向下的执行,如果非要返回结果的话,将ajax 中的参数 async 改为 false,即为同顺序执行2014-05-05
最新评论