AJAX实现google搜索建议实战

搜索建议实战的目标是为了输入搜索内容,动态的进行匹配,效果图如下:

整体思路:

在客户端搜索框中触发onkeyup事件,

随时向PHP服务器请求当前输入框中的内容,

PHP服务器获取到keywords后,向数据库中模糊查找相关的数据

编写顺序为:

  SQL---->PHP------>HTML----->CSS----->JavaScript

具体实现:

  第一步:创建一个数据库(fanfan.sql),向books表中插入若干条记录

 1 SET NAMES UTF8;
 2 DROP DATABASE IF EXISTS fanfan;
 3 CREATE DATABASE fanfan CHARSET=UTF8;
 4 USE fanfan;
 5 //创建books表
 6 CREATE TABLE books(
 7     bid INT PRIMARY KEY AUTO_INCREMENT,
 8     bname VARCHAR(32),
 9     price FLOAT(5,2)
10 );
11 //插入8条记录
12 INSERT INTO books VALUES
13 (NULL,‘HTML权威指南‘,45),
14 (NULL,‘CSS权威指南‘,55),
15 (NULL,‘JavaScript权威指南‘,95),
16 (NULL,‘HTTP权威指南‘,35),
17 (NULL,‘HTML从入门到精通‘,35),
18 (NULL,‘CSS从入门到精通‘,45),
19 (NULL,‘JavaScript从入门到精通‘,85),
20 (NULL,‘HTTP从入门到精通‘,35);

fanfan.sql

  第二步:创建一个PHP文件,用于从数据库查询符合条件的数据库。接收客户端提交的搜索关键字kw,执行模糊查询,把包含搜索关键字的记录全部查询出来,以HTML片段形式返回,形如:

<li>JavaScrupt从入门到精通</li>
<li>HTTP从入门到精通</li>

 1 <?php
 2 header(‘Content-Type:text/html;charset=UTF-8‘);//设置响应格式为html
 3 @$keywords=$_REQUEST[‘kw‘] or die(‘kw required‘);//获取客户端请求的数据
 4 $conn=mysqli_connect(‘127.0.0.1‘,‘root‘,‘‘,‘fanfan‘,3306);//连接数据库
 5 $sql=‘SET NAMES UTF8‘;
 6 mysqli_query($conn,$sql);
 7 $sql="SELECT bname FROM books WHERE bname LIKE ‘%$keywords%‘";//模糊匹配含有关键字的记录行
 8 $result=mysqli_query($conn,$sql);
 9 $list =mysqli_fetch_all($result,MYSQLI_ASSOC);//抓取所有符合条件的记录行
10 foreach($list as $book){
11     echo "<li>$book[bname]</li>";//遍历上一步结果的关联数组
12 }
13 ?>

book_search.php

  第三步:创建一个HTML文件,包含搜索框,并设置样式

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>ajax search</title>
 6         <style type="text/css">
 7             .container {
 8                 position: relative;
 9             }
10             .container #suggest {
11                 position: absolute;
12                 top: 100%;
13                 margin: 0;
14                 padding: 0;
15                 list-style: none;
16                 border: 1px solid #ccc;
17                 width: 200px;
18                 display: none;
19             }
20             .container #suggest li {
21                 line-height: 2em;
22                 padding: 0 10px;
23             }
24             .container #suggest li:hover {
25                 background: #eee;
26             }
27         </style>
28     </head>
29     <body>
30         <h3>书籍搜索</h3>
31         <div class="container">
32             <input type="text" id="search" /><button>搜索</button>
33             <ul id="suggest">
34
35             </ul>
36         </div>
37     </body>
38 </html>

book_search.html

  第四步:用原生的AJAX,经过四步固定套路,获取第二步中得到的结果,懒得新建一个js文件,直接把script部分的代码,放到HTML网页中</body>之前即可

 1 <script>
 2 search.onkeyup=function(){
 3     var kw=this.value;//获取input中的值
 4     if(!kw){
 5         return;//若空白,则不请求
 6     }
 7     var xhr=new XMLHttpRequest();//第一步,新建xhr对象
 8     xhr.onreadystatechange=function(){//第二步,监听状态
 9         if(xhr.readyState===4){
10             if(xhr.status===200){
11                 doResponse(xhr);
12             }else{
13                 console.log(‘响应成功但是有问题‘);
14             }
15         }
16     }
17     xhr.open(‘GET‘,`book_search.php?kw=${kw}`,true);//打开连接
18     xhr.send(null);//发送连接
19     function doResponse(xhr){//消息处理
20         console.log(xhr);
21         if(xhr.responseText===""){
22             suggest.style.display=‘none‘;
23         }else{
24             suggest.innerHTML=xhr.responseText;
25             suggest.style.display=‘block‘;
26         }
27     }
28 }
29 </script>

AJAX

最后,可以验证结果了,打开网址http://127.0.0.1/fanfan/book_search.html(我的本地设置的地址),即可查看效果啦~前提XAMPP打开着。。

时间: 2024-10-07 06:13:42

AJAX实现google搜索建议实战的相关文章

HTML5+Ajax+Jquery调用Google搜索API实现搜索引擎,支持web,image,news,vedio4种模式!

原文:HTML5+Ajax+Jquery调用Google搜索API实现搜索引擎,支持web,image,news,vedio4种模式! 源代码下载地址:http://www.zuidaima.com/share/1550463589878784.htm web,image,news,vedio4种模式! 已经拿javaniu作出测试,下载即可查看 

利用EJS查找可用的Google搜索服务器IP,并缓存入系统Hosts文件内

此博客为9925.org的镜像,登录9925.org可以查看到最新博文. 原文出处:http://ily.so/qi2ENn 搜索可用的Google搜索服务器IP,并将搜索结果缓存入系统Hosts文件内. 提示:此脚本在R5以上版本的EJS脚本IDE工具内可成功解释运行. clear(); console.info("/**************************版权声明**************************/"); console.info("/*  

Google搜索成最大入口,简单谈下个人博客的SEO

个人静态博客SEO该考虑哪些问题呢?本篇文章给你答案 咖啡君在开始写文章时首选了微信公众号作为发布平台,但公众号在PC端的体验并不好,连最基本的文章列表都没有,所以就搭建了运维咖啡吧的网站,可以通过点击文章底部"阅读原文"访问网站体验 为了方便管理及节约成本,选择了免费的Github Pages作为网站运行平台.用Django写了个管理后台来管理文章,管理后台跑在我的电脑上,它可以将markdown格式的内容生成静态页面并自动上传至Github,管理后台的介绍看这篇文章:利用Djang

十大高明的Google搜索技巧

转载自https://www.mifengtd.cn/articles/ten-tips-for-smarter-google-searches.html Google是一个非常精密成熟的搜索引擎,但大多数的用户都没有能完全地利用到它的能力.一般人就是在Google的搜索框中输入一两个关键 字,然后点击"搜索"按钮,等着Google显示出它第一页的搜索结果.这是一个相当简单模式匹配算法的搜索,不幸的是,通常此时出现的大部分都是并不需要的结果. 所以这篇文章中将向你展示如何更智能.更高效

一个简单的ExtJS搜索建议框

封装的是一个Ext4.2的组件,继承并兼容于Ext的ComboBox. 实现原理非常easy,在 combo 中监听 keyup 事件就可以. 搜索建议的Combo.基本上全然兼容, 使用方式与Combo下拉框一样. 须要后台程序依据keyword进行搜索建议. 源代码例如以下: // 搜索建议框,使用时请适当改动包名 Ext.define("CNC.view.SearchComboBox",{ extend: "Ext.form.field.ComboBox",

高级的Google搜索技巧你知道有哪些

前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您展示如何更智能.更高效地进行Google的系列搜索. Google是一个非常精密成熟的搜索引擎,但大多数的用户都没有能完全地利用到它的能力.一般人就是在Google的搜索框中输入一两个关键字,然后点击"搜索"按钮,等着Google显示出它第一页的搜索结果.这是一个相当简单模式匹配算法的搜索

谷歌google搜索打不开、谷歌gmail邮箱及相关服务无法登录的解决的方法

歌打不开 google打不开,与中国大陆封杀有关,可是主要是由于近期googleserver在全球范围内又一次进行了布局调整. 解决的方法是仅仅要改动用户本地计算机hosts文件就能够了. 一.Windows系统改动hosts文件的方法 windows系统hosts文件在本地电脑C盘,路径是:C:\Windows\System32\drivers\etc 用记事本txt文件打开hosts文件. (假设提示没有管理权限的话,可把hosts文件复制,粘贴到电脑的桌面.在电脑桌面上双击hosts文件,

bootstrap suggest搜索建议插件

近日因工作需要看了下此插件. 首先下载bootstrap js包.添加此插件的引用.注意css样式要引用,不能忘记. 前台页面代码,因为楼主做的是选项卡切换查询不同的结果. <tr> <th style="background: #fff;" width="30%">类型:</th> <td width="70%"> <select class="selectpicker show-

Google搜索技巧、使用Google的其它专业搜索

前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您展示如何更智能.更高效地进行Google的系列搜索. Google是一个非常精密成熟的搜索引擎,但大多数的用户都没有能完全地利用到它的能力.一般人就是在Google的搜索框中输入一两个关键字,然后点击“搜索”按钮,等着Google显示出它第一页的搜索结果.这是一个相当简单模式匹配算法的搜索,不幸的是