下面的工作將從后臺(tái)編程轉(zhuǎn)移到前臺(tái)腳本中,請(qǐng)你打開(kāi)index.html頁(yè)面。切換到【代碼】視圖,在頭部區(qū)域輸入下面代碼:
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest(){
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
}
</script>
有點(diǎn)面熟吧,這正是第2.1.2節(jié)中創(chuàng)建XMLHttpRequest對(duì)象實(shí)例的源代碼,我們把它封裝在一個(gè)函數(shù)中,這樣可以在其他代碼位置隨時(shí)調(diào)用。不明白的讀者可以返回看一下,這里就不再費(fèi)口舌了。
然后在其下面再定義一個(gè)事情驅(qū)動(dòng)函數(shù):
function handleStateChange(){
if(xmlHttp.readyState == 4){
if (xmlHttp.status == 200 || xmlHttp.status == 0){
document.all.message.innerHTML=xmlHttp.responseText;
}
}
}
上面代碼先判斷當(dāng)前響應(yīng)是否結(jié)束,如果結(jié)束則讀取響應(yīng)信息,并賦值給頁(yè)面中ID為message的元素。你可以參閱第2.1.6節(jié)了解為什么要這樣編寫(xiě)。
最后在編寫(xiě)一個(gè)開(kāi)始請(qǐng)求的函數(shù),代碼如下:
function startRequest(url){
createXMLHttpRequest();
try{
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
}catch(exception){
alert("您要訪問(wèn)的資源不存在!");
}
}
</script>
上面函數(shù)以GET方法向指定文件發(fā)出請(qǐng)求并接收響應(yīng)的數(shù)據(jù)(詳細(xì)講解可以參閱第2.1.4節(jié)內(nèi)容)。然后在HTML結(jié)構(gòu)代碼中輸入一個(gè)包含空值的div元素,設(shè)置該元素的ID值為message:
<div id="container">
<div id="sidebar1">
<h3>留言板</h3>
<FORM action="save.asp" method=post>… </FORM>
</div>
<div id="mainContent">
<h2>留言內(nèi)容</h2>
<div id="message"></div>
</div>
<br class="clearfloat" />
</div>
最后,在<body>標(biāo)簽中調(diào)用startRequest(url)函數(shù)即可:
<body class="twoColFixRt" onload="startRequest('list.asp');">
好啦,整個(gè)示例的功能基本完成,你不妨試驗(yàn)一下,在留言板中輸入簡(jiǎn)單的留言并提交之后,返回即可看到自己的留言,感覺(jué)不錯(cuò)吧(如圖2-16所示)。
圖 2-16
如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇