Ajax应用之XMLHttpRequest对象重用(IE)

本文探讨了Ajax中XMLHttpRequest (XHR) 对象的重用问题,特别是在不同浏览器环境下的实现差异。文章指出,在IE浏览器中,XHR对象的onreadystatechange方法需要在open方法之后设置才能正确重用。
 
Ajax对于动态网络应用,尤其是后台数据支撑等应用有着十分独到的好处,像Google Map, Virtual Earth等。页面当中会反复用到XMLHttpRequest(XHR)对象,这时对象重用就非常重要,否则反复new,不仅费时还耗资源。
对象重用也不麻烦,只需要加个对象状态判断即可,但这里需要注意的是IE下有点特别。请看下面代码:
req.onreadystatechange = processReqChange;
req.open("GET", url, true); req.send("");
这段代码在firefox下反复使用是没有问题的,在IE下则出现问题:第一次使用正常,但第二次则无法成功返回。
原因:IE会在open方法里面重置XHR对象,因此processReqChange则不能被激发。
修改成如下形式:
req.open("GET", url, true);
req.onreadystatechange = processReqChange; req.send("");
则一切正常,XHR对象可以正常重用。
可见,XHR对象的重用为了做到跨浏览器,需要将open方法置于设置onreadystatechange方法之前。
关于对象重用的问题还可以参考:
http://keelypavan.blogspot.com/2006/03/reusing-xmlhttprequest-object-in-ie.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值