http://www.cnblogs.com/jerry01/archive/2009/09/03/1559624.html

昨天做了一个利用 ajax实现页面无刷新的从服务器端获得时间的例子,当时对于xmlhttprequest对象的readystate的后三个状态不是很清楚,想了半 天,也不明白!后面在程序的不同地方中用alert(xmlhttp.readystate)查看readystate值的变化,并且请教朋友之后,才弄 明白其中的几个问题:创建xmlhttprequest对象之后没有调用open之前readystate值为0,调用open()之后就变为1了,并且 此时onreadystatechange函数与open()几乎是同时执行的。在之后调用send方法之后,在startHttpRequest函数中 readystate值仍为1,而调用send方法之后应该有2,3,4三个状态,而只有在startHttpRequest函数用alert语句才可以 观察到3个值!这是为什么呢?这是因为在startHttpRequest函数中当解析到send这一句时,并没有真正开始执行send执行。只有 send执行,才可以在onreadystatechange函数观察到状态值的变化。readystate不是发送的状态,它是准备发送的状态,要把它 想像成“人间大炮一级准备、二级准备、放”这样的口号,不是请求发送本身。同时xmlhttp也不是监听服务器信息,它是在send的时候获取服务器返回 的状态信息而已,只有一次,监听则是一直在观察状态。至此,心中的疑惑全部解开!

关于readystate五个状态总结如下:

readyState 状态    状态说明
(0)未初始化
此阶段确认XMLHttpRequest对象是否创建,并为调用open()方法进行未初始化作好准备。值为0表示对象已经存在,否则浏览器会报错--对象不存在。
(1)载入
此阶段对XMLHttpRequest对象进行初始化,即调用open()方法,根据参数(method,url,true)完成对象状态的设置。并调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。
(2)载入完成
此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据,并不能直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解析作好准备。
(3)交互
此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式,为在客户端调用作好准备。状态3表示正在解析数据。
(4)完成
此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。
概而括之,整个XMLHttpRequest对象的生命周期应该包含如下阶段:
创建-初始化请求-发送请求-接收数据-解析数据-完成

关于xmlhttprequest的readystate属性的五个状态的更多相关文章

  1. xmlhttprequest readyState 属性的五种状态

    关于readystate五个状态总结如下: readyState 状态    状态说明(0)未初始化此阶段确认XMLHttpRequest对象是否创建,并为调用open()方法进行未初始化作好准备.值 ...

  2. 转 XMLHttpRequest().readyState的五种状态详解

    转 http://javathinker.blog.ccidnet.com/blog-htm-itemid-1262479-do-showone-type-blog-uid-36384.html 在& ...

  3. ajax readyState的五种状态详解

    通过ajax的readyState的值,我们可以知道当前的这个http请求处于什么状态.对于web的调试是比较重要的. readyState 状态说明: (0)未初始化 此阶段确认XMLHttpReq ...

  4. XMLHttpRequest对象的属性与方法

    XMLHttpRequest对象是Ajax的核心,它有很多属性和方法.1,readyState属性当一个XMLHttpRequest对象被创立后,readyState属性标示了当前对象处于什么状态,可 ...

  5. IE下script标签的readyState属性

    在做加载器时遇到一个常见问题,如何判定一个脚本已经执行完毕. "uninitialized" – 原始状态 "loading" – 下载数据中 "lo ...

  6. Ajax技术之XMLHttpRequest(二)【XMLHttpRequest常用方法和属性】

    一.XMLHttpRequest中常用的方法: (1)open()方法:用于设置进行异步请求目标的URL.请求方法以及其他参数信息. 函数原型:open("method",&quo ...

  7. Ajax的XMLHttpRequest对象的属性和方法总结

    1.redayState属性: 当一个XMLHttpRequest对象被创建后,readyState属性别哦是当前对象正处于什么状态:0:未初始化状态:已经建立:1:准备发送状态:此时XMLHttpR ...

  8. HTML readyState 属性 iframe onreadystatechange事件

    -----------readyState--------------- 定义和用法 readyState 属性返回当前文档的状态(载入中……). 该属性返回以下值: uninitialized - ...

  9. jsp页面加载readyState的五种状态根据我们状态添加进度条

    这段代码放在页面最下面 原文如下: document.onreadystatechange = subSomething;//当页面加载状态改变的时候执行这个方法. function subSomet ...

随机推荐

  1. PL/SQL

    function & procedure packages function --> arguments or parameters with arguments, IN, read o ...

  2. T420修改wifi灯闪动模式

    给T420新装了centos7发现默认的配置wifi灯是工作时闪动的,有点晃眼,想改成简单的on 的时候常亮,off的时候常暗的模式 添加配置文件: vi /etc/modprobe.d/wlanle ...

  3. JS教程:词法作用域和闭包 (网络资源)

    varclassA = function(){ ; } classA.prototype.func1 = function(){ var that = this, ; function a(){ re ...

  4. 码表由来:ascll码-Gbk2312-GBK-Unicode-UTF-8

    码表ascll码-Gbk2312-GBK-Unicode-UTF-8, ascll是基本的标准码表,GB2312是中文码表,GBK是扩展之后的码表,Unicode是国际通用码表,UTF-8是优化后的U ...

  5. 安装Windows Metasploit Framework

    Installing the Metasploit Framework on Windows 1. Visit http://windows.metasploit.com/metasploitfram ...

  6. java classpath深入详解(转)

    http://developer.51cto.com/art/200509/2786.htm 设置类路径 结构 可通过对 JDK 工具使用 -classpath 选项(首选方法)或设置 CLASSPA ...

  7. Python 温习

    关于Python内置函数的示例 Type "copyright", "credits" or "license()" f重写or more ...

  8. JQuery源码分析(五)

    分离构造器 通过new 操作符构建一个对象,一般经过四部:   A.创建一个新对象   B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象)   C.执行构造函数中的代码   D.返回这 ...

  9. Making the Grade_滚动数组&&dp

    Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...

  10. iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例)

    iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notific ...