function showGift() {
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
document.getElementById("output").innerHTML = "Time is for " + xmlHttp.responseText + ".";
}
}
< /script>
</head>
<body onload="getGiftFromServer()">
<h1>AJAX例子</h1>
<div id="output"></div>
</body>
</html>
加载页面时,将调用JavaScript的getGiftFromServer()函数,此函数完成了上面所提的应用AJAX的流程中第1至第4步,同时设定了一个每隔十秒自动调用此函数的定时器。而showGift()函数完成所提流程中的第5至第7步。下面详细说明每一步骤。
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