AJax的核心对象在1988年就已经集成于IE中了,随后在各种主流浏览器中也陆续开始得到支持。XMLHttpRequest对象已经在大多数的浏览器中使用,这个对象是Ajax兴起的客观基础以及前提条件。
XMLHttpRequest强大之处就是允许开发者在JavaScript中以异步的方式向服务器发出HTTP请求并得到响应。让客户端可以在任何时候与服务器进行通信,并且不仅限于在整个页面提交的时候。同时,异步不会阻塞用户的当前操作,用户等待的时候仍然可以进行其他的操作。
创建XMLHttpRequest对象:
Var xmlHttp=new XMLHttpRequest();
老版本的IE使用Activex对象:
Var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
//为了避免不支持的现象。
Var xmlHttp; If(window.XMLHttpRequest) { //对于新版本的浏览器。 xmlHttp=new XMLHttpRequest(); } Else { //对于旧版本的浏览器。 xmlHttp= new ActiveXObject("Microsoft.XMLHTTP"); }
将请求发送到服务器:
用XMLHttpRequest对象的open()和send()方法:
xmlHttp.open("GET","txtName.text",true);
常用方法:
描述
Open(method,url,async)
规定请求的类型、URL以及是否异步处理请求。
method:请求的类型;get或post
url:文件在服务器上的位置。
async:true(异步)或false(同步)
Send(string)
将请求发送到服务器。
setRequestHeader(header,value)
向请求添加HTTP头。
header:规定的头名称。
value:规定的头值。
属性:
描述
onreadystatechange
readyState
存有XMLHttpRequest的状态。0到4变化。
0:请求未初始化。
1:服务器链接已建立。
2:请求已接受。
3:请求处理中。
4:请求已完成,且响应已就绪。
status
200:"ok"
请求服务的类型:
Get与Post相比较:
大部分情况使用Get。
特殊情况使用Post:
小结:
整个过程是:
创建XMLHttpRequest 对象 -> 指定发送地址及发送方法 -> 发送请求 -> 指定处理方法并处理返回结果。但是需要注意,我们正常的思路理解是这样的,可是onreadystatechange事件句柄指定处理方法需要在发送之前就指定好,否则无法处理状态变化事件。
所以我们应该按照下面的流程:创建XMLHttpRequest 对象 -> 指定发送地址及发送方法 -> 指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。