不久前我写了一个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。
新闻热点
疑难解答