XHR 响应

由 driventokill 创建,路飞 最后一次修改 2015-09-25

AJAX - 服务器 响应

由于 HTTP 响应是由服务端发出的,并且服务器做出响应需要时间(比如网速慢等原因),所以我们需要监听服务器响应的状态,然后才能进行处理。

服务器响应

如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。

属性 描述
responseText 获得字符串形式的响应数据。
responseXML 获得 XML 形式的响应数据。
 

responseText 属性

如果来自服务器的响应并非 XML,请使用 responseText 属性。

responseText 属性返回字符串形式的响应,因此您可以这样使用:

实例

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

尝试一下 »

提示:对于 responseText 属性,只有当 readyState 属性值变为4时,responseText 属性才可用,因为这表明AJAX请求已经结束!


responseXML 属性

如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性:

实例

请求 cd_catalog.xml 文件,并解析响应:

xmlDoc=xmlhttp.responseXML; 
txt=""; 
x=xmlDoc.getElementsByTagName("ARTIST"); 
for (i=0;i<x.length;i++) 
  { 
  txt=txt + x[i].childNodes[0].nodeValue + "<br>"; 
  } 
document.getElementById("myDiv").innerHTML=txt;

尝试一下 »

 
 

XHR readyState

由 driventokill 创建,路飞 最后一次修改 2015-09-28

AJAX - onreadystatechange 事件

当发送一个请求后,客户端需要确定这个请求什么时候会完成,因此,XMLHttpRequest对象提供了 onreadystatechange 事件机制来捕获请求的状态,继而实现响应。


onreadystatechange 事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。

每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState 属性存有 XMLHttpRequest 的状态信息。

下面是 XMLHttpRequest 对象的三个重要的属性:

属性 描述
onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState

存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

0-请求未初始化

 
  1-服务器连接已建立
  2-请求已接收
  3-请求处理中
  4-请求已完成,且相应已就绪
 
status 200:“ok”  404:未找到页面
 
当readyState为4且status为200 表示响应已就绪
 
xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState==4&&xmlhttp.status==200){
       document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
    }
}
 

onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每个变化。

提示:XHR.readyState状态的变化如下:

  • 0:请求未初始化,还没有调用 open()
  • 1:请求已经建立,但是还没有发送,还没有调用 send()
  • 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
  • 3:请求在处理中;通常响应中已有部分数据可用了,没有全部完成。
  • 4:响应已完成;您可以获取并使用服务器的响应了。

最新文章

  1. HBase Zookeeper 安装学习
  2. Android 定位地理坐标体系
  3. React与ES6(三)ES6类和方法绑定
  4. PDA手持终端实现零售行业商场和超市仓储管理和销售开单自动化和系统化
  5. Ember.js demo5
  6. bootm命令中地址参数,内核加载地址以及内核入口地址
  7. NDK开发之数组操作
  8. Android中Menu的基本用法
  9. 关于Windows Phone的资源文件Build Action属性
  10. WMvare桥接模式固定IP
  11. python-类内置属性和内置方法
  12. LoadRunner 11 error:Cannot initialize driver dll
  13. Boost - 从Coroutine2 到Fiber
  14. java中将string类型转int类型或者将string类型转long类型方法
  15. activemq 控制面板里Number Of Pending Messages、 Messages Enqueued等含义解释
  16. Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题
  17. git合并分支上指定的commit
  18. 【C#】语音识别 - System.Speech
  19. JSP 过滤器
  20. Python里面这些点,据说80%的新手都会一脸懵逼

热门文章

  1. java_28 序列化与反序列化
  2. JAVA EE 环境配置——JAVA8 下载安装和 Eclipse EE的下载安装
  3. [原]Webpack 3 + AngularJS1.* + Bootstrap 4 + Mapbox-gl
  4. 发布后就很丢人的随笔(c++)
  5. python websocket 再线聊天室的 Demo
  6. struts 1.x 方法探析
  7. 探究osg中的程序设计模式【目录】
  8. FTP做作业用到的知识点:
  9. js最实用string(字符串)类型的使用及截取与拼接详解
  10. BUAAOO第二单元多线程电梯作业总结