在下面的 AJAX 例子中,我们会演示当用户向一个标准的 HTML 表单中输入数据时网页如何与 web 服务器进行通信。
Suggestions:Anna , Amanda
表单的 HTML 代码:
<form> First Name:<input type="text" id="txt1" οnkeyup="showHint(this.value)" />Suggestions: <span id="txtHint">
正如您看到的,这是一个简单的带有名为 "txt1" 输入域的 HTML 表单。输入域的事件属性定义了一个由 onkeyup 事件触发的函数。
表单下面的段落包含了一个名为 "txtHint" 的 span,这个 span 充当了由 web 服务器所取回的数据的位置占位符。
当用户输入数据时,名为 "showHint()" 的函数就会被执行。函数的执行是由 "onkeyup" 事件触发的。另外需要说明的是,当用户在文本域中输入数据时把手指从键盘按键上移开时,函数 showHint 就会被调用。
showHint() 函数是一个位于 HTML 页面 head 部分的很简单的 JavaScript 函数。
此函数包含以下代码:
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); }每当有字符输入文本框时,此函数就会执行。
假如文本域中存在某些输入,函数就会执行:
- 定义回传数据的服务器的 url(文件名)
- 使用文本框的内容向 url 添加参数(q)
- 添加一个随机的数字,以防止服务器使用某个已缓存的文件
- 创建一个 XMLHTTP 对象,并告知此对象当某个改变被触发时执行名为 stateChanged 的函数
- 向服务器发送一个 HTTP 请求
- 如果输入域为空,此函数仅仅会清空 txtHint 占位符的内容
上面的例子可调用名为 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 占位符的内容就被响应文本来填充。
这是 JavaScript 代码,存储在文件 "clienthint.js" 中:
var xmlHttp 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); } function stateChanged() { if (xmlHttp.readyState==4) { document.getElementById("txtHint").innerHTML=xmlHttp.responseText; } } 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; }其实不存在什么“AJAX 服务器”。AJAX 页面可以由任一因特网服务器提供服务。
在上一节的例子中被 JavaScript 调用的服务器页面是一个简单的名为 "gethint.asp" 的 ASP 文件。
下面我们列出了这个服务器页面代码的实例,使用 ASP 来编写。
"gethint.asp" 页面中的代码针对 IIS 使用 VBScript 编写。它会检查一个名字数组,然后向客户端返回相应的名字:
<% response.expires=-1 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" '从URL取得参数q q=ucase(request.querystring("q")) '如果q的长度大于0,则查找所有的hint if len(q)>0 then hint="" for i=1 to 30 if q=ucase(mid(a(i),1,len(q))) then if hint="" then hint=a(i) else hint=hint & " , " & a(i) end if end if next end if '如果找不到hint,则输出"no suggestion" '或者输出正确的值 if hint="" then response.write("no suggestion") else response.write(hint) end if %>
最后
以上就是干净冰淇淋为你收集整理的AJAX Suggest实例的全部内容,希望文章能够帮你解决AJAX Suggest实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复