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属性改变时,就会调用该函数。 |
readyState | 存有XMLHttpRequest的状态。0到4变化。 0:请求未初始化。 1:服务器链接已建立。 2:请求已接受。 3:请求处理中。 4:请求已完成,且响应已就绪。 |
status | 200:"ok" 404:为找到页面。 |
请求服务的类型:
Get与Post相比较:
大部分情况使用Get。
特殊情况使用Post:
- 无法使用缓存文件(更新服务器上的文件或数据库)
- 向服务器发送大量数据(post没有数据量限制)
- 发送包含未知字符的用户输入时,post比get更稳定更可靠。
小结:
整个过程是:
创建XMLHttpRequest 对象 -> 指定发送地址及发送方法 -> 发送请求 -> 指定处理方法并处理返回结果。但是需要注意,我们正常的思路理解是这样的,可是onreadystatechange事件句柄指定处理方法需要在发送之前就指定好,否则无法处理状态变化事件。
所以我们应该按照下面的流程:创建XMLHttpRequest 对象 -> 指定发送地址及发送方法 -> 指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。