AJax实现类似百度搜索栏的功能 (面试多见)
程序员文章站
2022-04-29 09:24:54
实习过程中需要用到异步提交功能,于是试着去了解了一下ajax,瞬间感觉以前学习的真是九牛一毛啊,确实如此,做web应用开发,如果不会jquery和ajax,那真的就是白学了...
实习过程中需要用到异步提交功能,于是试着去了解了一下ajax,瞬间感觉以前学习的真是九牛一毛啊,确实如此,做web应用开发,如果不会jquery和ajax,那真的就是白学了,了解之后我才感觉网上的那些花哨的功能已经都可以实现了。
话不多说,下面有ajax实现一个简单的百度搜索栏的功能,当用户在上面的输入框中键入字符时,会执行函数 "showhint()" 。该函数由 "onkeyup" 事件触发:
function showhint(str) { var xmlhttp; if (str.length==0) { document.getelementbyidx_x("txthint").innerhtml=""; return; } if (window.xmlhttprequest) { xmlhttp=new xmlhttprequest(); } else { xmlhttp=new activexobject("microsoft.xmlhttp"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readystate==4 && xmlhttp.status==200) { document.getelementbyidx_x("txthint").innerhtml=xmlhttp.responsetext; } } xmlhttp.open("get","gethint.asp?q="+str,true); xmlhttp.send(); }
源代码解释:
如果输入框为空 (str.length==0),则该函数清空 txthint 占位符的内容,并退出函数。
如果输入框不为空,showhint() 函数执行以下任务:
创建 xmlhttprequest 对象
当服务器响应就绪时执行函数
把请求发送到服务器上的文件
请注意我们向 url 添加了一个参数 q (带有输入框的内容)
请求的文件是用php来写的,当然用什么都可以,和一般的页面没有本质的区别:
<?php // 用名字来填充数组 $a[]="anna"; $a[]="brittany"; $a[]="cinderella"; $a[]="diana"; $a[]="eva"; $a[]="fiona"; $a[]="gunda"; $a[]="hege"; $a[]="inga"; $a[]="johanna"; $a[]="kitty"; $a[]="linda"; $a[]="nina"; $a[]="ophelia"; $a[]="petunia"; $a[]="amanda"; $a[]="raquel"; $a[]="cindy"; $a[]="doris"; $a[]="eve"; $a[]="evita"; $a[]="sunniva"; $a[]="tove"; $a[]="unni"; $a[]="violet"; $a[]="liza"; $a[]="elizabeth"; $a[]="ellen"; $a[]="wenche"; $a[]="vicky"; //获得来自 url 的 q 参数 $q=$_get["q"]; //如果 q 大于 0,则查找数组中的所有提示 if (strlen($q) > 0) { $hint=""; for($i=0; $i<count($a); $i++) { if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))) { if ($hint=="") { $hint=$a[$i]; } else { $hint=$hint." , ".$a[$i]; } } } } // 如果未找到提示,则把输出设置为 "no suggestion" // 否则设置为正确的值 if ($hint == "") { $response="no suggestion"; } else { $response=$hint; } //输出响应 echo $response; ?>
听说去百度面试的时候就是这样类似的题目,其实了解之后也不过如此嘛。
以上所述是小编给大家介绍的ajax实现类似百度搜索栏的功能 (面试多见),希望对大家有所帮助