我们已看到 ajax 可被用来创建更多交互性的应用程序。
在下面的 ajax 例子中,我们会演示当用户向一个标准的 html 表单中输入数据时网页如何与 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 事件触发的函数。
表单下面的段落包含了一个名为 "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; }varurl
="gethint.asp";url=url+"?q
="+str;url=url+"&sid
="+math.random();xmlhttp.onreadystatechange=statechanged
;xmlhttp.open("get",url,true);xmlhttp.send(null);}
每当有字符输入文本框时,此函数就会执行。
假如文本域中存在某些输入,函数就会执行:
上面的例子可调用名为 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 占位符的内容就被响应文本来填充。
新闻热点
疑难解答
图片精选