`
zhouyrt
  • 浏览: 1172599 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IE8+中XMLHttpRequest对象timeout属性及ontimeout事件

阅读更多

 

最近在写一个ajax工具库,参考了JQuery等对请求超时的处理。偶然发现IE8的XMLHttpRequest对象已经增加这方面的支持了。在IE9 pre4测试也支持。如果W3C能将这两个东东标准化多好啊,不用那么的hack方式实现了。

见:http://msdn.microsoft.com/en-us/library/ms535874%28VS.85%29.aspx

XMLHttpRequest的timeout属性可以设置,表示在等待响应多少毫秒之后终止。
即如果在规定的时间内浏览器没有收到响应,那么就触发timeout事件,给xhr.ontimeout赋值为一个响应函数后可被执行。

大概如下:

xhr.onreadystatechange = function(){
	if(xhr.readyState == 4){
		try{
			var s = xhr.status;
			if(s>= 200 && s < 300){
				//success(xhr);
			}else{
				//failure(xhr);
			}						
		}catch(e){}
	}else{}
};
xhr.open();
xhr.timeout = 1000;
xhr.ontimeout = function(){
	alert('request timeout');
}
 

超时后再访问xhr的status属性会出异常,因此加上try catch。

源码见附件,注意只在IE8+测试有效。

 

 

分享到:
评论
2 楼 jingua1026 2011-06-09  
<div class="quote_title">zhouyrt 写道</div>
<div class="quote_div">
<p> </p>
<p>最近在写一个ajax工具库,参考了JQuery等对请求超时的处理。偶然发现IE8的XMLHttpRequest对象已经增加这方面的支持了。在IE9 pre4测试也支持。如果W3C能将这两个东东标准化多好啊,不用那么的hack方式实现了。<br><br>
见:<a href="http://msdn.microsoft.com/en-us/library/ms535874%28VS.85%29.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/ms535874%28VS.85%29.aspx</a>
<br><br>
XMLHttpRequest的timeout属性可以设置,表示在等待响应多少毫秒之后终止。<br>
即如果在规定的时间内浏览器没有收到响应,那么就触发timeout事件,给xhr.ontimeout赋值为一个响应函数后可被执行。<br><br>
大概如下:</p>
<pre name="code" class="js">xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
try{
var s = xhr.status;
if(s&gt;= 200 &amp;&amp; s &lt; 300){
//success(xhr);
}else{
//failure(xhr);
}
}catch(e){}
}else{}
};
xhr.open();
xhr.timeout = 1000;
xhr.ontimeout = function(){
alert('request timeout');
}</pre>
 
<p>超时后再访问xhr的status属性会出异常,因此加上try catch。<br><br>
源码见附件,注意只在IE8+测试有效。</p>
<p> </p>
<p> </p>
</div>
<p>很好,学习</p>
1 楼 lixinlixin2008 2010-08-17  
顶,学习

相关推荐

    全面剖析 Ajax XMLHttpRequest对象

    7. other methods & properties:还包括abort()方法用于取消当前请求,getResponseHeader()和getAllResponseHeaders()用于获取响应头信息,以及timeout和ontimeout属性用于设置超时和处理超时事件等。 W3C正在为...

    全面剖析XMLHttpRequest对象

    此外,`abort()`方法可以中断正在进行的请求,`overrideMimeType()`可以覆盖服务器响应的MIME类型,而`timeout`属性和`ontimeout`事件则允许设置请求超时和相应的处理函数。 总之,XMLHttpRequest对象提供了强大的...

    XMLHttpRequest对象的使用

    此外,XMLHttpRequest还提供了其他方法和属性,如`abort()`用于中断请求,`overrideMimeType()`用于设置MIME类型,`timeout`和`ontimeout`用于处理超时等。 在王兴魁老师的教程中,可能会详细讲解这些方法的用法、...

    XMLHttpRequest中文参考手册

    9. **timeout**和**ontimeout**:你可以设置请求的超时时间,并通过ontimeout事件处理超时情况。 10. **abort()**: 如果需要取消正在执行的请求,可以调用此方法。 在实际应用中,XMLHttpRequest通常配合AJAX库如...

    XMLHttpRequest方法和属性API

    6. **`timeout`**: 设置请求超时的时间(以毫秒计),默认为无穷大。当超过设定时间,`ontimeout`事件会被触发。 7. **`ontimeout`**: 超时时的回调函数,可以在这里处理错误。 8. **`withCredentials`**: 设置为`...

    XMLHttpRequest Level 2 使用指南

    在老版本的 XMLHttpRequest 对象中,主要的属性包括 readyState、status、responseText 和 responseXML。readyState 表示请求的当前状态,当其值为 4 时,表示数据已接收完成。status 是服务器返回的状态码,200 ...

    window.XMLHttpRequest详解

    同时,`timeout`属性可以设置请求的超时时间: ```javascript xhr.timeout = 5000; // 设置超时时间为5秒 xhr.ontimeout = function() { console.error('请求超时'); }; xhr.onerror = function() { console....

    xmlhttprequest参考手册

    7. `timeout`:设置请求超时的时间(毫秒),超过该时间将触发ontimeout事件。 8. `withCredentials`:设置是否在跨域请求中发送cookie。 三、XMLHttpRequest对象的方法 1. `open()`:初始化请求,接受三个参数:...

    Ajax整理

    8. timeout和ontimeout属性:允许设置请求超时时间,当超过这个时间未收到响应时,触发ontimeout事件。 9. abort()方法:可以取消正在进行的请求。 通过这些属性和方法,开发者可以创建复杂的异步通信逻辑,实现如...

    IE6、IE7、IE8浏览器下的CSS、JS兼容性对比

    同时,IE8的`XMLHttpRequest`增加了`timeout`属性和`ontimeout`方法,提高了异步请求的控制能力。 总的来说,IE6、IE7和IE8在CSS和JavaScript上的兼容性问题反映了浏览器演进过程中的技术差异和向标准的靠拢。...

    IE8 引入跨站数据获取功能说明

    除了XDomainRequest,IE8还对XMLHttpRequest对象进行了增强,增加了`timeout`属性和`ontimeout`事件。`timeout`属性允许开发者设置请求的超时时间,当请求超过设定的时间仍未完成,就会触发`ontimeout`事件。这是一...

    Ajax学习文档

    7. **Progress事件和Timeout**:XHR对象还提供了progress事件来处理数据传输的进度,以及timeout属性和ontimeout事件来设置超时和处理超时情况。 8. **XMLHttpRequest Level 2**:在XMLHttpRequest Level 2中,增加...

    XMLHttpRequest

    timeout和ontimeout属性** `timeout`属性可以设置请求超时时间,单位为毫秒。`ontimeout`是超时事件的处理函数。 ```javascript xhr.timeout = 5000; // 设置超时时间为5秒 xhr.ontimeout = function() { console...

    AJAX常用面试题

    - 在IE中,通过`new ActiveXObject()`创建;在Firefox等现代浏览器中,使用`new XMLHttpRequest()`。 - 主要方法包括`open()`(定义请求类型、URL和是否异步)、`send()`(发送请求)、`abort()`(取消请求),以及`...

    xmlhttp api 中文 帮助 文档

    - `timeout`: 属性可设置请求超时的时间,单位为毫秒。 - `ontimeout`: 事件处理函数,当请求超时时触发。 - `withCredentials`: 如果设置为`true`,则允许跨域请求携带cookie。 ### CORS(跨源资源共享) 现代...

    nodejs发送http请求时遇到404长时间未响应的解决方法.docx

    在上面的代码中,我们使用了 XMLHttpRequest 对象来发送 HTTP 请求,并设置了 timeout 属性来限制请求时长。这样,Node.js 就不会继续请求下去,即使遇到 404 响应。 另一种解决方法是使用 Node.js 的 http 模块,...

Global site tag (gtag.js) - Google Analytics