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(); //取消本次傳輸
}
}
//在規(guī)定的時間內(nèi)檢查readyState屬性的值
setTimeout(checkForTimeout,_options.timeout);
function onreadystateCallback(){
if(xhr.readyState==4){
/*
* 注釋:狀態(tài)碼在200內(nèi)表示成功,300內(nèi)表示重定向,400內(nèi)是客戶端錯誤,500是服務(wù)器端錯誤
*/
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>
相關(guān)文章
解決Ajax方式上傳文件報錯"Uncaught TypeError: Illegal invocation"
這篇文章主要介紹了Ajax方式上傳文件報錯"Uncaught TypeError: Illegal invocation",非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06Jquery $.ajax函數(shù)外的一段代碼的執(zhí)行順序
調(diào)用了JQuery的異步函數(shù)$.ajax ,然后在$.ajax函數(shù)外之后又有一段Jquery 代碼。每次都是在$.ajax之后的代碼先執(zhí)行2014-06-06ajax返回的json內(nèi)容進行排序使用sort()方法實現(xiàn)
關(guān)于ajax返回的json內(nèi)容進行排序,主要使用sort()對數(shù)組的元素進行排序,具體實現(xiàn)如下,感興趣的朋友可以參考下哈,希望對大家有所幫助2013-07-07jQuery的ajax傳參巧用JSON使用示例(附Json插件)
jQuery的ajax調(diào)用很方便,傳參的時候喜歡用Json的數(shù)據(jù)格式,使用示例代碼如下,感興趣的朋友可以參考下,希望對大家有所幫助2013-08-08