记忆盒子

把记忆装进灰色的盒子,封装起来,那年那月,重新拾起。

首页搜索目录
search
当前主题: 软件编程

为什么xmlhttp.readyState一直是1?

作者:Kaka    时间:2010-1-11 17:28:1    浏览:    评论:0

      今天在测试程序的时候,发现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来检测,或者改变下测试环境,把程序放到其他的机器来测试,看是否环境导致的问题。

加入本站QQ群(312716741),交流分享网站建设、优化、SEO技术。。。

 

上一篇: W3C是什么?什么是W3C标准?
下一篇: 检测网页的几种方式

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客                   QQ交流群(312716741)

  • 通过Google订阅本站 通过鲜果订阅本站 通过抓虾订阅本站
  • 通过QQ邮箱订阅本站 通过Yahoo订阅本站 通过有道订阅本站

Search

最新评论及回复

最近留言

网站分类

Powered By Z-Blog 1.8 Walle Build 91204 Designed by Han'space

Copyright @2009 All Rights Reserved. 粤ICP备09073737号

Powered By Z-Blog 1.8 Walle Build 91204
Copyright @2009 All Rights Reserved.