不久前我寫了一個Ajax工具庫。這篇是對請求超時處理的補充。IE8/9的xmlHttPRequest對象已經增加這方面的支持了。IE10 pre1測試也支持。如果W3C能將這兩個東東標準化多好啊,不用那么的hack方式實現了。
xmlhttpRequest的timeout屬性可以設置,表示在等待響應多少毫秒之后終止。
即如果在規定的時間內瀏覽器沒有收到響應,那么就觸發timeout事件,給xhr.ontimeout賦值為一個響應函數后可被執行。
主要代碼如下
01 | xhr.onreadystatechange = function(){ |
02 | if(xhr.readyState == 4){ |
03 | try{ |
04 | var s = xhr.status; |
05 | if(s>= 200 && s < 300){ |
06 | //success(xhr); |
07 | }else{ |
08 | //failure(xhr); |
09 | } |
10 | }catch(e){} |
11 | }else{} |
12 | }; |
13 | xhr.open(); |
14 | xhr.timeout = 1000; |
15 | xhr.ontimeout = function(){ |
16 | alert('request timeout'); |
17 | } |
超時后再訪問xhr的status屬性會出異常,因此加上try catch。
新聞熱點
疑難解答