1、定义事件处理器,此处理器将在服务器端返回数据时自动被触发执行。 function showGift() {
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
document.getElementById("output").innerHTML = "Time is for " + xmlHttp.responseText + ".";
}
} |
因为我们这里使用异步,readyState属性用来判断服务器返回信息的状态。其值是一个从0至4的整数,对应于:
- 0:对象已创建,但未初始化(未调用open()方法)
- 1:对象已创建,但未调用send()方法
- 2:已调用send()方法,但status及headers还未可用
- 3:已经传回部分数据,但status及headers还未完全可用
- 4:已经收到所有数据,可使用所有数据
2、获取XMLHTTPRequest,并将事件处理器注册给它
注意:要使用XMLHTTPRequest,需要IE5.0以上的版本。
2.1 取得XMLHTTPRequest
在IE7.0之前获得XMLHTTPRequest,使用如下代码:
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} |
而在IE7.0中:
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest
} |
2.2 注册事件处理器
| xmlHttp.onreadystatechange = showGift; |
showGift为传入的方法名,每当XMLHTTPRequest的状态发生改变时,将执行此方法
3. 与服务器连接并发送
| xmlHttp.open("GET", url , true) |
其方法签名如下:
| xmlHttp.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword) |
其中:
- bstrMethod: 连接方式,可用的有GET, POST, PUT, or PROPFIND
- bstrUrl: 服务器的url
- varAsync(可选): 调用是否异步,默认为true(调用立即返回)
- bstrUser(可选):用户名,如果url需要验证时附上
- bstrPassword(可选):密码,如果url需要验证时附上