现在很多浏览器 都可以直接从JavaScript中初始化http请求并获取结果。这个http请求对象就是指XMLHttpRequest对象。
一、同步请求
在IE里创建XMLHttpRequest对象,使用的是ActiveObject对象。
var oRequest=new ActiveXObject(“Microsoft.XMLHTTP”);
在创建好这个对象后,就可以使用它的open()方法指定发送的请求。该方法有 三个(共有5个,三个可省略)参数,分别是:指定发送的类型(get或post),请求的url,指定发送的方式(同步为false或异步true,默认为true)
请求打开后,然后使用send()方法将其发送出去。
二、异步请求
1. 异步:
异步是指ajax应用软件和主机服务器进行联系的方式。如果使用ajax的异步模式,浏览器就不必等待用户的请求操作,也不必更新整个窗口就 可以显示新获取的数据。
2. XMLHttpRequest对象详解
XMLHttpRequest对 象是整个Ajax(Asynchronous Javascript And XML)开发的基础。它提供了客户端和服务器端进行异步通信 的能力。一方面它向服务器提交一个请求,获取指定页面的内容,另一方面将指定的数据提交到服务器端。所有的数据经过JavaScript中间层处理,按照需 要的方式对数据进行加工,结合DOM和CSS,做出各种Ajax应用程序。
1) 创建XMLHttpRequest对象
var XMLHttpReq;
//创 建XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
XMLHttpReq=new XMLHttpRequest();
}
else if(window.ActiveXObject){//IE浏览器
try{//IE5.5
XMLHttpReq=new ActiveXObject(“Microsoft.XMLHTTP”);
}catch(e){//IE5.0
XMLHttpReq=new ActiveXObject(“Msxm12.XMLHTTP”);
}
}
…
2) 使用open方法指定发送的请求
创建好XMLHttpRequest对象,就可以使用了。
open方法创建一个请求,并 准备向服务器发送。
open(method, url, asynchronous, user, password);
参数分别为:
method:指定请求的类 型,为get或post
url:指定请求的指定,可以是绝对或相对地址,并可带查询字符串
asynchronous:可 选参数,表示请求是同步还是异步,异步为true,同步为false,默认为true。
user:可选参数,指定请求 的用户名
password:可选参数, 指定请求的密码
例如:XMLHttpReq.open(“get”, “ajax.jsp?open=creatuser”);//创建一个请求,用get方法请求相对地址为ajax.jsp?open=creatuser的网页
3) 使用send方法发送一个请求
send(body);
body参数:表示要想服务器 发送的数据,其格式为查询字符串的形式。
例如:var body=”user=jack&&sex=male&age=
若open方法指定是get方式,这些参数作为查询字符串提交。若open方法指定是post方 式,这些参数作为http的post方 法提交。
若不发送数据,可以使用XMLHttpReq.send(null);
若open方法使用是异步请求,send方法执行后会立即执行下一条语句,若则,send方法一直阻塞,直到请求完成或超时才执行下一条语句。这也是同步和异步的区别
4) 使用onreadystatechange事件捕获请求的状态变化
在发送一个请求后,往往无法知道请求什么时候完成,所以必须利用事件机制来捕获请求的状态。
onreadystatechange事件可以指定一个事件处理函数来处理XMLHttpRequest对象的执行结果。例如:
XMLHttpReq.onreadystatechange=function(){…//事件处理语句}
事件需在send方法之前进行,以保证请求发送前就有捕获请求状态变化的代码。