Ajax Suggest实例
Demo演示用户向一个标准的HTML表单中输入数据时网页如何与web服务器进行通信。

在下面的文本框中输入名字:

First Name:
Suggestions:
 
表单的 HTML 代码:
<form> 
First Name:<input type="text" id="txt1" onkeyup="showHint(this.value)" />
</form>
<p>Suggestions: <span id="txtHint"></span></p> 
其中span充当了由web服务器所取回的数据的位置占位符。
当用户输入数据时,showHint()函数就会被执行。当用户在文本域中输入数据时从键盘上移开时,函数就会被调用。
下面是JavaScript的showHint()函数的代码:
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);
}
上面的Demo也可以调用名字为GetXmlHttpObject() 的函数。此函数解决不同浏览器创建不同的XMLHTTP对象的问题。
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() 函数的代码:
function stateChanged() 
{ 
  if (xmlHttp.readyState==4)
  { 
  document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
  }
}
每当XMLHTTP对象状态改变时,stateChanged() 函数就会被执行。
当状态为“4”时,txtHint 占位符的内容就被响应文本来填充。