【 tulaoshi.com - Web开发 】
我们已看到AJAX可被用来创建更多交互性的应用程序。
AJAXSuggest实例
在下面的AJAX例子中,我们会演示当用户向一个标准的HTML表单中输入数据时网页如何与web服务器进行通信。
在下面的文本框中输入名字:
FirstName:
Suggestions:
例子解释-HTML表单
表单的HTML代码:
form
FirstName:inputtype="text"id="txt1"onkeyup="showHint(this.value)"/
/form
pSuggestions:spanid="txtHint"/span/p
正如您看到的,这是一个简单的带有名为"txt1"输入域的HTML表单。输入域的事件属性定义了一个由onkeyup事件触发的函数。
表单下面的段落包含了一个名为"txtHint"的span,这个span充当了由web服务器所取回的数据的位置占位符。
当用户输入数据时,名为"showHint()"的函数就会被执行。函数的执行是由"onkeyup"事件触发的。另外需要说明的是,当用户在文本域中输入数据时把手指从键盘按键上移开时,函数showHint就会被调用。
例子解释-showHint()函数
showHint()函数是一个位于HTML页面head部分的很简单的JavaScript函数。
此函数包含以下代码:
functionshowHint(str)
{
if(str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
xmlHttp=GetXmlHttpObject()
if(xmlHttp==null)
{
alert("您的浏览器不支持AJAX!");
return;
}
varurl="gethint.asp";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}每当有字符输入文本框时,此函数就会执行。
假如文本域中存在某些输入,函数就会执行:
定义回传数据的服务器的url(文件名)
使用文本框的内容向url添加参数(q)
添加一个随机的数字,以防止服务器使用某个已缓存的文件
创建一个XMLHTTP对象,并告知此对象当某个改变被触发时执行名为stateChanged的函数
向服务器发送一个HTTP请求
如果输入域为空,此函数仅仅会清空txtHint占位符的内容
例子解释-GetXmlHttpObject()函数
上面的例子可调用名为GetXmlHttpObject()的函数。
此函数的作用是解决为不同浏览器创建不同的XMLHTTP对象的问题。
这是此函数的代码:
functionGetXmlHttpObject()
{
varxmlHttp=null;
try
{
//Firefox,Opera8.0+,Safari
xmlHttp=newXMLHttpRequest();
}
catch(e)
{
//InternetExplorer
try
{
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
}
}
returnxmlHttp;
}例子解释-stateChanged()函数
stateChanged()函数包含下面的代码:
functionstateChanged()
{
if(xmlHttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
}每当XMLHTTP对象的状态发生改变时,stateChanged()函数就会执行。
当状态变更为4(“完成”)时,txtHint占位符的内容就被响应文本来填充。