Ajax 连接数据库实现类似百度搜索功能
1、Html代码部分
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="../jquery-1.11.2.min.js"></script> <style type="text/css"> *{ margin:0px auto; padding:0px} #xianshi{ width:300px; margin-top:20px} #txt{ width:300px} #name{ width:296px} #list{ width:300px; position:absolute; z-index:5} .sj{ width:298px; height:19px; border:1px solid #999; border-top:0px; background-color:white} .sj:hover{ cursor:pointer} #fg{ margin:30px 0px 20px 0px;} </style> </head> <body> <!--首先做一个外层div--> <div id="xianshi"> <!--做两个div,分别放文本框和下拉列表--> <div id="txt"> <input type="text" id="name" /> <!--<input type="button" value="搜索" id="btn" />--> </div> <div id="list"> </div> </div> <hr id="fg" /> <!--建一张表格,显示搜索到的数据--> <table id="tb" width="100%" border="1" cellpadding="0" cellspacing="0"> </table> </body> <script type="text/javascript"> $(document).ready(function(e) { XianShi(); //输入内容显示下拉,不用点击按钮 $("#name").keyup(function(){ //先去到用户输入的值 var key = $(this).val(); //调用Ajax, $.ajax({ async:false,//设置是否异步 url:"chuli.php", data:{key:key,bs:0}, type:"POST", dataType:"TEXT", success: function(data){//到这里我们再去写php文件 //$("#list").text(data)先输出一下data,看一下输出什么值 if(data.trim() == "")//如果返回的值为空,不往下走了 { $("#list").html("");//如果为空的话,清掉 } else { var shuju = data.trim().split("|");//查看完之后,对数组进行拆分 var str = ""; for(var i=0;i<shuju.length;i++)//进行循环,取到汽车名称的详细数据 { str = str+"<div class='sj'>"+shuju[i]+"</div>"; } $("#list").html(str);//输入关键字后,就出现相应的提示 $("#list").css("display","block");//为了解决再次输入不显示下拉列表的问题,在此进行设置 } } }); //当下拉列表框出来的时候,鼠标放上显示背景色 $(".sj").mouseover(function(){ $(".sj").css("background-color","white"); $(this).css("background-color","#F60"); }) //鼠标离开去掉背景色 $(".sj").mouseout(function(){ $(this).css("background-color","white"); }) //点击下拉列表框中的内容,将选中项的值放到文本框 $(".sj").click(function(){ var txt = $(this).text(); $("#name").val(txt); $("#list").css("display","none");//输入完毕后,下拉列表框消失,但是再次输入就会不显示 XianShi(); }) XianShi(); }) $("#btn").click(function(){ XianShi(); }) }); function XianShi() {//取关键字,根据关键字查询数据 var key = $("#name").val(); $.ajax({ url:"chuli.php", data:{key:key,bs:1},//设置bs:1,是为了将此部分使用的Ajax代码,与前面的进行区分,使逻辑更清楚 type:"POST", dataType:"TEXT", success: function(data){ var hang = data.trim().split("|"); var str = "<tr><td>汽车名称</td><td>系列</td><td>上市时间</td><td>油耗</td><td>价格</td></tr>"; for(var i=0; i<hang.length;i++) { var lie = hang[i].split("^"); str = str +"<tr><td>"+lie[1]+"</td><td>"+lie[2]+"</td><td>"+lie[3]+"</td><td>"+lie[4]+"</td><td>"+lie[7]+"</td></tr>"; } $("#tb").html(str); } }); } </script> </html>
2、php代码
<?php include("../DBDA.php"); $db = new DBDA(); $bs = $_POST["bs"]; $key = $_POST["key"];//取到的关键字 if($bs == 1) {//根据关键字从汽车表里查询汽车名称 $sql = "select * from car where Name like '%{$key}%'"; echo $db->StrQuery($sql);//调用StrQuery方法,直接输出字符串 } else { if($key == "")//取到关键字后进行判断,如果是空字符串的话,返回为空, { echo ""; } else { $sql = "select Name from car where Name like '%{$key}%'"; echo $db->StrQuery($sql); } } ?>