为什么xmlhttp.readyState一直是1?
2010-05-31 16:31
260 查看
今天在测试程序的时候,本地没有任何问题,但发布到国外的服务器上后,发现xmlhttp.readyState一直为1,这种情况很奇怪,我一直没遇到过。开始我以为是用ActiveXObject('Microsoft.XMLHTTP') 创建的xmlhttp对象不对,于是改变用其他的协议来创建对象,MSXML2.XMLHTTP、 MSXML3.XMLHTTP等,但无一有效。
xmlhttp.readyState=1是什么意思呢?为什么会出现这样的问题?怎么解决?带着一连串的疑问,开始查阅有关资料。
如下是xmlhttp.readyState的详细解释:
xmlhttp.readyState=0
(未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
xmlhttp.readyState=1
(初始化) 对象已建立,尚未调用send方法
xmlhttp.readyState=2
(发送数据) send方法已调用,但是当前的状态及http头未知
xmlhttp.readyState=3
(数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误
xmlhttp.readyState=4
(完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据
由此可见,是调用send方法不成功,已经调用了open方法。看来,问题出现在open这里了。open的写法是xmlhttp.open("GET",url,true),并没有发现有什么不对!见鬼了!
我尝试把true改为false。注,true为异步,即不等数据全部接收完就进行下一步;false为同步,等接收完数据才进行下一步。有关同步与异步的解释,请看软件编程中同步与异步的区别。令我意想不到的是,这样竟然可以调用send方法了,xmlhttp.readyState不一直为1了,检测到有2、3、4的状态了。
出现这种情况,我觉得是url的问题,xmlhttp调用open方法时,遇到很难请求的url,导致xmlhttp.readyState一直为1,这与网络有很大关系。遇到这种情况,可以改变下open的url来检测,或者改变下测试环境,把程序放到其他的机器来测试,看是否环境导致的问题。
xmlhttp.readyState=1是什么意思呢?为什么会出现这样的问题?怎么解决?带着一连串的疑问,开始查阅有关资料。
如下是xmlhttp.readyState的详细解释:
xmlhttp.readyState=0
(未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
xmlhttp.readyState=1
(初始化) 对象已建立,尚未调用send方法
xmlhttp.readyState=2
(发送数据) send方法已调用,但是当前的状态及http头未知
xmlhttp.readyState=3
(数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误
xmlhttp.readyState=4
(完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据
由此可见,是调用send方法不成功,已经调用了open方法。看来,问题出现在open这里了。open的写法是xmlhttp.open("GET",url,true),并没有发现有什么不对!见鬼了!
我尝试把true改为false。注,true为异步,即不等数据全部接收完就进行下一步;false为同步,等接收完数据才进行下一步。有关同步与异步的解释,请看软件编程中同步与异步的区别。令我意想不到的是,这样竟然可以调用send方法了,xmlhttp.readyState不一直为1了,检测到有2、3、4的状态了。
出现这种情况,我觉得是url的问题,xmlhttp调用open方法时,遇到很难请求的url,导致xmlhttp.readyState一直为1,这与网络有很大关系。遇到这种情况,可以改变下open的url来检测,或者改变下测试环境,把程序放到其他的机器来测试,看是否环境导致的问题。
相关文章推荐
- 作为程序员为什么一直都很努力,却没有进步?
- XmlHttp.readyState属性整理(陆续加入中)
- 优步uber司机申请了为什么一直没有通过审核,帐号也显示未激活
- 为什么我一直不懈的养着这个博客但是还审核
- 为什么的深搜一直不对了,先贴着以后在弄把
- 周鸿祎:不会找合伙人,不配做创业者 --你自己创业是因为不愿意给别人打工,为什么你觉得别人就会愿意一直为你打工呢?
- 一直有个问题说不清楚,我们学习知识的时候为什么一定要按照知识点积累和理论并行?
- ELF为什么一直是1版本
- [MySQL FAQ]系列 -- 为什么一直有临时文件
- caffe finetune问题:按照网上的教程微调alexnet为什么loss一直是87.3365?
- xmlHttp的readyState 和 status参数详解
- 为什么android的流畅度一直不出IOS?
- 为什么还原sqlserver数据库的状态一直都是正在还原
- 为什么inLiveResize一直在跑?
- 作为程序员为什么一直都很努力,却没有进步?
- XMLHTTP.readyState的五种状态
- web 开发之js---ajax 中的两种返回状态 xmlhttp.status和 xmlhttp.readyState
- 为什么衡山派掌门人莫大先生一直没有婚娶
- 为什么你的月薪一直破不了万?
- 马云给北大学子讲创业:阿里为什么一直不提供班车和宿舍