信息  黄页  圈子  社区
     登陆  用户注册     用户中心
龙运在线
      
长沙做网站免费发布信息免费添加商家免费发布活动
 
XMLHTTP.readyState 五种状态
 
XMLHTTP.readyState 五种状态


交互”阶段作为一个必要的转换过程存在于“(2)载 入完成”到“(4)完成”之间的理由,也就是其任务是什么。归结起来,我觉得比较理想的解释方法应该以“状态:任务(目标)+过程+表现(或特征)”表达 模式来对这几个状态进行定义比较准确,而且让人容易理解。现试总结如下:

readyState的状态值
0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
1 (初始化) 对象已建立,尚未调用send方法
2 (发送数据) send方法已调用,但是当前的状态及http头未知
3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,
4 (完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据

概而括之,整个XMLHttpRequest对象的生命周期应该包含如下阶段:

创建-初始化请求-发送请求-接收数据-解析数据-完成

在 具体应用中,明确了readyState的五个状态(XMLHttpRequest对象的生命周期各个阶段)的含义,就可以消除对Ajax核心的神秘感 (语焉不详的背后要么是故弄玄虚,制造神秘感;要么就是“以其昏昏,使人昭昭”),迅速把握其实质,对减少学习中的挫折感和增强自信心都极其有益。

比如,通过如下示例:

//声明数组

var states = ["正在初始化……",

       "正在初始化请求……成功!

正在发送请求……",

       "成功!

正在接收数据……",

       "完成!

正在解析数据……",

       "完成!

"];

//回调函数内部代码片段

if (xmlHttp.readyState==4)

{

    var span = document.createElement("span");

    span.innerHTML = states[xmlHttp.readyState];

    document.body.appendChild(span);

    if (xmlHttp.status == 200)

    {

      var xmldoc = xmlHttp.responseXML;

      //其他代码

    }

   

     //别忘记销毁,防止内存泄漏

     xmlHttp = null;

}else{

    var span = document.createElement("span");

    span.innerHTML = states[xmlHttp.readyState];

    document.body.appendChild(span);

}

结果如下: 正在初始化请求……成功!

正在发送请求……成功!

正在接收数据……完成!

正在解析数据……完成!

我们很容易明白XMLHttpRequest对象在各个阶段都在做什么。因此,也就很容易对Ajax的核心部分有一个真正简单明了的



  暂无相关评论!
 
你的回应...

图片地址:
查看圈子

    关于龙运在线  |   联系我们  |  招商加盟  |  条款声明    |  网站服务      湘ICP备08000386号
免责声明:站内会员言论仅代表个人观点,并不代表本站同意其说法或描述,本站不承担由此引起的法律责任