Suggestions:
就如你看到的,它只是一个普通的表单,里面有一称为"txt1"的输入框
下一段包括了一个称做“txtHint”的SPAN。这个SPAN是用来存储从服务器重新获得的信息的。
当用户输入数据,名为“showHint()”的函数将被执行。这个函数的执行是由“onkeyup”事件触发的。换种说法:每当用户在txt1区域内触动键盘按钮,showHint的功能就被执行。
实例解析- showHint()函数
showHint()函数是一种位于HTML顶端的简单的JS函数。
函数包含以下代码:
function showHint(str)
{ 
if (str.length > 0)
{ 
var url="gethint.asp?sid="+Math.random()+"&q="+str
xmlHttp=GetXmlHttpObject(stateChanged) 
xmlHttp.open("GET", url , true) 
xmlHttp.send(null) 
} 
else
{ 
document.getElementById("txtHint").innerHTML="" 
} 
}
  每当有字符被键入输入区内就会执行这个函数
  如有字符被输入文字输入区(str.length>0)函数就执行:
  建立一个XMLHTTP对象 
  发送一个HTTP请求到服务器上的"gethint.asp"上 
  当HTTP触发一次变动则XMLHTTP对象就会执行stateChanged()函数 
  实例解析 - stateChanged()函数
  stateChanged()函数包含以下代码:
function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{ 
document.getElementById("txtHint").innerHTML=xmlHttp.responseText 
} 
} 
  每当XMLHTTP对象的状态发生改变stateChanged()函数就会被执行
  当状态改变为4(或为"完成"),txtHint span里就会显示反馈的文字
  AJAX源代码
AJAX 实例 - AJAX 源码
下面的源代码是前一个页面的。你可以将它复制并粘贴,自己来尝试。
AJAX HTML页面
这是一个HTML网页。它包括了一个简单的HTML表单和关联JS的link
Suggestions:
JS代码在下面
AJAX 的 JS
这是JS代码,被保存在"clienthint.js"文件中
var xmlHttp
function showHint(str)
{ 
if (str.length > 0)
{ 
var url="gethint.asp?sid=" + Math.random() + "&q=" + str
xmlHttp=GetXmlHttpObject(stateChanged)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
} 
else
{ 
document.getElementById("txtHint").innerHTML=""
} 
} 
function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{ 
document.getElementById("txtHint").innerHTML=xmlHttp.responseText 
} 
} 
function GetXmlHttpObject(handler)
{ 
var objXmlHttp=null
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesnt work in Opera") 
return; 
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{ 
var strName="Msxml2.XMLHTTP"
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP"
} 
try
{ 
objXmlHttp=new ActiveXObject(strName)
objXmlHttp.onreadystatechange=handler 
return objXmlHttp
} 
catch(e)
{ 
alert("Error. Scripting for ActiveX might be disabled") 
return 
} 
} 
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest()
objXmlHttp.onload=handler
objXmlHttp.onerror=handler 
return objXmlHttp
}
}
AJAX 服务端页面
服务端页面被JS所调遣,是一名为"gethint.asp"的ASP文件,页面是用VBS来针对IIS所写的。它可以被轻松的写成PHP或是一些其他的服务语言,它只是检查了名字组并将相吻合的名字返回给客户端:
dim a(30)
a(1)="Anna"
a(2)="Brittany"
a(3)="Cinderella"
a(4)="Diana"
a(5)="Eva"
a(6)="Fiona"
a(7)="Gunda"
a(8)="Hege"
a(9)="Inga"
a(10)="Johanna"
a(11)="Kitty"
a(12)="Linda"
a(13)="Nina"
a(14)="Ophelia"
a(15)="Petunia"
a(16)="Amanda"
a(17)="Raquel"
a(18)="Cindy"
a(19)="Doris"
a(20)="Eve"
a(21)="Evita"
a(22)="Sunniva"
a(23)="Tove"
a(24)="Unni"
a(25)="Violet"
a(26)="Liza"
a(27)="Elizabeth"
a(28)="Ellen"
a(29)="Wenche"
a(30)="Vicky"
q=request.querystring("q")if len(q)>0 then
 hint=""
 for i=1 to 30
 x1=ucase(mid(q,1,len(q)))
 x2=ucase(mid(a(i),1,len(q)))
 if x1=x2 then
 if hint="" then
 hint=a(i)
 else
 hint=hint & " , " & a(i)
 end if
 end if
 next
end if 
if hint="" then 
 response.write("no suggestion")
else
 response.write(hint)
end if

