AJAX XMLHttpRequest对象

来源:互联网 发布:泉立方骗局知乎 编辑:程序博客网 时间:2024/06/05 20:41

XMLHttpRequest对象:

XMLHttpRequest对象是AJAX 的核心,
XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容。

属性和方法:
这里写图片描述

属性:
readyState
HTTP 请求的状态.当一个 XMLHttpRequest 初次创建时,这个属性的值从 0 开始,直到接收到完整的 HTTP 响应,这个值增加到 4。
这里写图片描述
每一次状态改变都会触发onreadystatechange事件。

responseText
目前为止为服务器接收到的响应体(不包括头部),或者如果还没有接收到数据的话,就是空字符串。
如果 readyState 小于 3,这个属性就是一个空字符串。当 readyState 为 3,这个属性返回目前已经接收的响应部分。如果 readyState 为 4,这个属性保存了完整的响应体。
如果响应包含了为响应体指定字符编码的头部,就使用该编码。否则,假定使用 Unicode UTF-8。

responseXML
对请求的响应,解析为 XML 并作为 Document 对象返回。

status
由服务器返回的 HTTP 状态代码,如 200 表示成功,而 404 表示 “Not Found” 错误。当 readyState 小于 3 的时候读取这一属性会导致一个异常。

statusText
这个属性用名称而不是数字指定了请求的 HTTP 的状态代码。也就是说,当状态为 200 的时候它是 “OK”,当状态为 404 的时候它是 “Not Found”。和 status 属性一样,当 readyState 小于 3 的时候读取这一属性会导致一个异常。

方法:
abort()
取消当前响应,关闭连接并且结束任何未决的网络活动。
这个方法把 XMLHttpRequest 对象重置为 readyState 为 0 的状态,并且取消所有未决的网络活动。例如,如果请求用了太长时间,而且响应不再必要的时候,可以调用这个方法

open()
初始化 HTTP 请求参数,例如 URL 和 HTTP 方法,但是并不发送请求。

open(method, url, async, username, password)

method 参数是用于请求的 HTTP 方式。值包括 GET、POST 和 HEAD。
url 参数是请求的主体,服务器端地址。
async 参数指示请求使用应该异步地执行。如果这个参数是 false,请求是同步的,后续对 send() 的调用将阻塞,直到响应完全接收。如果这个参数是 true 或省略,请求是异步的,不用等待返回结果,可以接着执行send()。

send()
发送 HTTP 请求,使用传递给 open() 方法的参数,以及传递给该方法的可选请求体。

setRequestHeader()
向一个打开但未发送的请求设置或添加一个 HTTP 请求。
setRequestHeader() 方法指定了一个 HTTP 请求的头部,它应该包含在通过后续 send() 调用而发布的请求中。这个方法只有当 readyState 为 1 的时候才能调用,例如,在调用了 open() 之后,但在调用 send() 之前。

setRequestHeader(name, value)

getAllResponseHeaders()
把 HTTP 响应头部作为未解析的字符串返回。
如果 readyState 小于 3,这个方法返回 null。否则,它返回服务器发送的所有 HTTP 响应的头部。头部作为单个的字符串返回,一行一个头部。每行用换行符 “\r\n” 隔开。

getResponseHeader()
返回指定的 HTTP 响应头部的值。其参数是要返回的 HTTP 响应头部的名称。
该方法的返回值是指定的 HTTP 响应头部的值,如果没有接收到这个头部或者 readyState 小于 3 则为空字符串。如果接收到多个有指定名称的头部,这个头部的值被连接起来并返回,使用逗号和空格分隔开各个头部的值。

五步使用法:
(1).建立XMLHttpRequest对象

   if(window.XMLHttpRequest){         //IE7+、Firefox、Chrome、Safari 以及 Opera            var xmlhttp=new XMLHttpRequest();            if (xmlhttp.overrideMimeType){                xmlhttp.overrideMineType("text/xml");               }           }    else if(window.ActiveXObject){                  //IE5 和 IE6                  try{                  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");                    }catch(e){                }             }       if(xmlhttp==undefined || xmlhttp==null){                 alert("当前浏览器不支持创建xmlhttp对象 ");                 return;                        }

(2).注册回掉函数

 xmlhttp.onreadystatechange=callback;

(3)使用open方法设置和服务器端交互的信息

 xmlhttp.open("GET","AJAX?name="+userName,true); //交互参数

(4)设置发送的数据,开始和服务器端交互

  xmlhttp.send(null);       

(5)在回调函数中判断交互是否结束,响应是否正确,并根据需要获取服务器端返回的数据,更新页面。

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

总结:
ajax 的核心是XMLHttpRequest对象,该对象使得ajax 可以同步或者异步地请求服务器,动态刷新页面。

原创粉丝点击