欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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实现类似百度搜索栏的功能 (面试多见),希望对大家有所帮助