XMLHttpRequest 对象
XMLHttpRequest 是一个 JavaScript 对象,它最初由微软设计,随后被 Mozilla,Apple, 和 Google采纳. 如今,该对象已经被 W3C组织标准化. 通过它,你可以很容易的取回一个URL上的资源数据. 尽管名字里有XML, 但XMLHttpRequest 可以取回所有类型的数据资源,并不局限于XML。
XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容。而且除了HTTP ,它还支持file 和 ftp 协议.
XMLHttpRequest 对象是名为 AJAX 的 Web 应用程序架构的一项关键功能。
浏览器支持XMLHttpRequest 得到了所有现代浏览器较好的支持。唯一的浏览器依赖性涉及 XMLHttpRequest 对象的创建。在 IE 5 和 IE 6 中,必须使用特定于 IE 的 ActiveXObject() 构造函数。
嗯,通过上面的介绍我们对XMLHttpRequest对象的认识就更加全面和专业一些了,不过我们还没有介绍怎么样使用它,所以,下面两小部分的内容分别介绍一下有关XMLHttpRequest对象的小代码段和常使用的属性与方法的更加详细的说明。
6)XMLHTTPRequest对象的简单代码段
function ajaxMethod() { xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } //2:监听XMLHttpRequest对象的状态信息。每当 readyState 改变时,就会触发 onreadystatechange 事件(readyState 属性存有 XMLHttpRequest 的状态信息) xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { //DO SOMETHING FOR THE SERVER RESPONSE } } //3:初始化HTTP请求的信息 xmlhttp.open("GET","URL",true); //4:将HTTP请求发送到服务器 xmlhttp.send(); }
上面的这段简单的代码是不可用的,不过稍做修改就可能成为一个可用的AJAX方法了,当然,我们重点想说明的是,简单的封装一个AJAX方法使用到了XMLHttpRequest对象的那些方法和属性。当然,如果想封装一个更加健全和可靠的AJAX方法就必须详细的了解XMLHttpRequest对象的一些常用的方法和属性更加详尽的使用方式了!下面就是我想介绍的这些内容。
7)XMLHTTPRequest对象常用的属性和方法的详细说明
(1)XMLHTTPReuest对象的常用属性详解
a:readyState
readyState属性用于存储XMLHttpRequest对象的状态信息,当一个 XMLHttpRequest对象初次创建时,这个属性的值从 0 开始,直到接收到完整的 HTTP 响应,这个值增加到 4。readyState 的值不会递减,除非当一个请求在处理过程中的时候调用了 abort() 或 open() 方法。每次这个属性的值增加的时候,都会触发 onreadystatechange 事件。
并且5 个状态中每一个都有一个相关联的非正式的名称,如下表所示:
b:status
由服务器返回的 当前请求的HTTP 状态代码,如 200 表示成功,而 404 表示 "Not Found" 错误。当 readyState 小于 3 的时候读取这一属性会导致一个异常,仅当数据发送并接收完毕后才可获取。下表是常见的HTTP的状态码及其说明:
c:statusText
statusText属性用名称而不是数字指定了请求的 HTTP 的状态代码。也就是说,当状态为 200 的时候它是 "OK",当状态为 404 的时候它是 "Not Found"。和 status 属性一样,当 readyState 小于 3 的时候读取这一属性会导致一个异常,也是仅当数据发送并接收完毕后才可获取。对应的名称参照上表。
d:responseText
responseText属性用于将来自服务器的响应信息作为字符串的形式返回。用它来存放到目前为止从服务器接收到的响应体(不包括头部),或者如果还没有接收到数据的话,就是空字符串。具体的存储时机如下:
如果 readyState 小于 3,这个属性就是一个空字符串。当 readyState 为 3,这个属性返回目前已经接收的响应部分。如果 readyState 为 4,这个属性就保存了完整的响应体。如果响应包含了为响应体指定字符编码的头部,就使用该编码。
e:responseXML