

我們已看到 AJAX 可被用來創(chuàng)建更多交互性的應用程序。
在下面的 AJAX 例子中,我們會演示當用戶向一個標準的 HTML 表單中輸入數(shù)據(jù)時網(wǎng)頁如何與 web 服務器進行通信。
Suggestions:
表單的 HTML 代碼:
<form> First Name:<input type="text"id="txt1"onkeyup="showHint(this.value)"/> </form> <p>Suggestions: <spanid="txtHint"></span></p>
正如您看到的,這是一個簡單的帶有名為 "txt1" 輸入域的 HTML 表單。輸入域的事件屬性定義了一個由 onkeyup 事件觸發(fā)的函數(shù)。
表單下面的段落包含了一個名為 "txtHint" 的 span,這個 span 充當了由 web 服務器所取回的數(shù)據(jù)的位置占位符。
當用戶輸入數(shù)據(jù)時,名為 "showHint()" 的函數(shù)就會被執(zhí)行。函數(shù)的執(zhí)行是由 "onkeyup" 事件觸發(fā)的。另外需要說明的是,當用戶在文本域中輸入數(shù)據(jù)時把手指從鍵盤按鍵上移開時,函數(shù) showHint 就會被調(diào)用。
showHint() 函數(shù)是一個位于 HTML 頁面 head 部分的很簡單的 JavaScript 函數(shù)。
此函數(shù)包含以下代碼:
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("您的瀏覽器不支持AJAX!");
return;
}
var url="gethint.asp";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
每當有字符輸入文本框時,此函數(shù)就會執(zhí)行。
假如文本域中存在某些輸入,函數(shù)就會執(zhí)行:
上面的例子可調(diào)用名為 GetXmlHttpObject() 的函數(shù)。
此函數(shù)的作用是解決為不同瀏覽器創(chuàng)建不同的 XMLHTTP 對象的問題。
這是此函數(shù)的代碼:
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}stateChanged() 函數(shù)包含下面的代碼:
function stateChanged()
{
if (xmlHttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
}
每當 XMLHTTP 對象的狀態(tài)發(fā)生改變時,stateChanged() 函數(shù)就會執(zhí)行。
當狀態(tài)變更為 4(“完成”)時,txtHint 占位符的內(nèi)容就被響應文本來填充。