什么是XMLHttpRequest对象?
XMLHttpRequest对象用于在后台与服务器交换数据。能够:在不重新加载页面的情况下更新网页;在页面已加载后从服务器请求数据;在页面已加载后从服务器接收数据;在后台向服务器发送数据。所有现在的浏览器都支持XMLHttpRequest对象。
创建XMLHttpRequest对象?
所有现代浏览器都内建了XMLHttpRequest对象,通过一行简单的JavaScript代码,我们就可以创建XMLHttpRequest对象。
xmlhttp = new XMLHttpRequest();
老版本的IE浏览器(IE5和IE6)使用AcitveX对象:
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
通常代码中的创建过程:
var XMLHttp=null;
if (window.XMLHttpRequest)
{
XMLHttp=new XMLHttpRequest();
}else if (window.ActiveXObject)
{
XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
XMLHttpRequest对象属性?
readyState属性:HTTP请求的状态,当一个XMLHttpRequest初次创建时,这个属性的值从0开始,知道接收到完整的HTTP响应,这个值增加到4。5个状态中每一个都有一个相关联的非正式的名称,下表列出了状态,名称和含义:
readyState的值不会递减,除非当一个请求在处理过程中的时候调用了abort()或open()方法。每次这个属性的值增加的时候,都会触发onreadystatechange事件句柄(每次readyState属性改变的时候调用的事件句柄函数,当readyState为3时,它也可能调用多次)。
responseText属性:目前为止从服务器接收到的响应体(不包括头部),或者如果还没有接收到数据的话,就是空字符串。如果readyState小于3,这个属性就是一个空字符串。当readyState为3,这个属性返回目前已经接收的响应部分。如果readyState为4,这个属性保存了完整的响应体。如果响应体包含了为响应体指定字符编码的头部,就使用该编码。否则,假定使用Unicode UTF-8。
responseXML属性:对请求的响应,解析为XML并作为Document对象返回。如果响应体不是”text/xml”返回null。
status属性:由服务器返回的HTTP状态代码,如200表示成功,而404表示“Not Found”错误。当readyState小于3的时候读取这一属性会导致一个异常。
statusText属性:这个属性用名称而不是数字指定了请求的HTTP状态码。也就是说,当状态为200的时候它是“OK”,当状态码为404的时候它是“Not Found”。和Status属性一样,当readyState小于3的时候读取这一属性会导致一个异常。
XMLHttpRequest对象的方法?
abort()方法:取消当前响应,关闭连接并且结束任何未完成的网络活动。这个方法把XMLHttpRequest对象重置为readyState为0的状态,并且取消所有未完成的网络活动。例如,如果请求用了太长时间,而且响应不再必要的时候,可以调用这个方法。
getAllResponseHeaders()方法:把HTTP响应头部作为未解析的字符串返回。如果readyState小于3,这个方法返回null。否则,它返回服务器发送的所有HTTP响应的头部。头部作为单个的字符串返回,一行一个头部。每行用换行符隔开。
getResponseHeader()方法:返回指定的HTTP响应头部的值。其参数是要返回的HTTP响应头部的名称。可以使用任何大小写来指定这个头部名字,和响应头部的比较是不区分大小写的。该方法的返回值是指定的HTTP响应头部的值,如果没有接收到这个头部或者readyState小于3,则为空字符串。如果接收到多个有指定名称的头部,这个头部的值被连接起来并返回,使用逗号和空格分隔开各个头部的值。
open()方法:初始化 HTTP 请求参数,例如 URL 和 HTTP 方法,但是并不发送请求。
send()方法:发送HTTP请求,使用传递给open()方法的参数,以及传递给该方法的可选请求体。
setRequestHeader()方法:向一个打开但未发送的请求设置或添加一个HTTP请求。
XMLHttpRequest.open()
初始化Http请求参数。语法open(method,url,async,username,password)。
method参数是用于请求的HTTP方法。值包括GET、POST、HEAD。
url参数是请求的主体。大多数浏览器实施了一个同源安全策略,并且要求这个URL与包含脚本的文本具有相同的主机名和端口。
async参数指示请求使用应该异步地执行。如果这个参数是false,请求是同步的,后续send()的调用将阻塞,直到响应完全接收。如果这个参数是true或省略,请求是异步的,且通常需要一个onreadystatechange事件句柄。
username和password参数是可选的,为url所需的授权提供认证资格。如果指定了,它们会覆盖url自己指定的任何资格。
XMLHttpRequest.send()
发送一个 HTTP 请求。语法:send(body)如果通过调用 open() 指定的 HTTP 方法是 POST 或 GET,body 参数指定了请求体,作为一个字符串或者 Document 对象。如果请求体不是必须的话,这个参数就为 null。
参考资料:XMLHttpRequest对象