======================================================
注:本文源代码点此下载
======================================================
ajax suggest实例
在下面的 ajax 例子中,我们会演示当用户向一个标准的 html 表单中输入数据时网页如何与 web 服务器进行通信。
在下面的文本框中输入名字:first name:
suggestions:no suggestion
例子解释 - html表单
表单的 html 代码:
first name:id="txt1" οnkeyup="showhint(this.value)" />
suggestions: id="txthint">
正如您看到的,这是一个简单的带有名为 "txt1" 输入域的 html 表单。输入域的事件属性定义了一个由 onkeyup 事件触发的函数。
表单下面的段落包含了一个名为 "txthint" 的 span,这个 span 充当了由 web 服务器所取回的数据的位置占位符。
当用户输入数据时,名为 "showhint()" 的函数就会被执行。函数的执行是由 "onkeyup" 事件触发的。另外需要说明的是,当用户在文本域中输入数据时把手指从键盘按键上移开时,函数 showhint 就会被调用。
例子解释 - 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() 函数
上面的例子可调用名为 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() 函数
statechanged() 函数包含下面的代码:
function statechanged()
{
if (xmlhttp.readystate==4)
{
document.getelementbyid("txthint").innerhtml=xmlhttp.responsetext;
}
}
每当 xmlhttp 对象的状态发生改变时,statechanged() 函数就会执行。
当状态变更为 4(“完成”)时,txthint 占位符的内容就被响应文本来填充。
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/