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

整体思路:

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

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

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

编写顺序为:

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

具体实现:

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

 SET NAMES UTF8;
 DROP DATABASE IF EXISTS fanfan;
 CREATE DATABASE fanfan CHARSET=UTF8;
 USE fanfan;
 //创建books表
 CREATE TABLE books(
     bid INT PRIMARY KEY AUTO_INCREMENT,
     bname ),
     price ,)
 );
 //插入8条记录
 INSERT INTO books VALUES
 (),
 (),
 (),
 (),
 (),
 (),
 (),
 ();

fanfan.sql

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

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

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

book_search.php

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

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="UTF-8">
         <title>ajax search</title>
         <style type="text/css">
             .container {
                 position: relative;
             }
             .container #suggest {
                 position: absolute;
                 top: 100%;
                 margin: 0;
                 padding: 0;
                 list-style: none;
                 border: 1px solid #ccc;
                 width: 200px;
                 display: none;
             }
             .container #suggest li {
                 line-height: 2em;
                 padding: 0 10px;
             }
             .container #suggest li:hover {
                 background: #eee;
             }
         </style>
     </head>
     <body>
         <h3>书籍搜索</h3>
         <div class="container">
             <input type="text" id="search" /><button>搜索</button>
             <ul id="suggest">

             </ul>
         </div>
     </body>
 </html>

book_search.html

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

 <script>
 search.onkeyup=function(){
     var kw=this.value;//获取input中的值
     if(!kw){
         return;//若空白,则不请求
     }
     var xhr=new XMLHttpRequest();//第一步,新建xhr对象
     xhr.onreadystatechange=function(){//第二步,监听状态
         if(xhr.readyState===4){
             if(xhr.status===200){
                 doResponse(xhr);
             }else{
                 console.log('响应成功但是有问题');
             }
         }
     }
     xhr.open('GET',`book_search.php?kw=${kw}`,true);//打开连接
     xhr.send(null);//发送连接
     function doResponse(xhr){//消息处理
         console.log(xhr);
         if(xhr.responseText===""){
             suggest.style.display='none';
         }else{
             suggest.innerHTML=xhr.responseText;
             suggest.style.display='block';
         }
     }
 }
 </script>

AJAX

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

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

  1. 关于python抓取google搜索结果的若干问题

    关于python抓取google搜索结果的若干问题     前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童 ...

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

    个人静态博客SEO该考虑哪些问题呢?本篇文章给你答案 咖啡君在开始写文章时首选了微信公众号作为发布平台,但公众号在PC端的体验并不好,连最基本的文章列表都没有,所以就搭建了运维咖啡吧的网站,可以通过点 ...

  3. ElasticSearch7.X.X-初见-模仿京东搜索的实战

    目录 简介 聊聊Doug Cutting ES&Solr&Lucene ES的安装 安装可视化界面ES head插件 了解ELK 安装Kibana ES核心概念 文档 类型 索引 倒排 ...

  4. 各大搜索引擎智能提示API(JSONP跨域实现自动补全搜索建议)

    ---------------------------------------搜索引擎JSONP接口--------------------------------------------- 提示:U ...

  5. 访问Google搜索,Google学术镜像搜索

    Google学术镜像搜索:http://dir.scmor.com/google/ 不用FQ也能访问谷歌搜索网站,让我们一起Google 不用FQ也能访问谷歌搜索网站,让我们一起Google(摘自:h ...

  6. 十大谷歌Google搜索技巧分享

    前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您 ...

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

    歌打不开 google打不开,与中国大陆封杀有关,可是主要是由于近期googleserver在全球范围内又一次进行了布局调整. 解决的方法是仅仅要改动用户本地计算机hosts文件就能够了. 一.Win ...

  8. 复杂的1秒--图解Google搜索技术

    谷歌(Google),一个非常成功,但又十分神秘,而且带有几分理想化色彩的互联网搜索巨人,它还是一家相当了不起的广告公司,谷歌首页上的那个搜索按钮是其年赢利200亿美元的杀手级应用,也是Interne ...

  9. 【转载】google搜索从入门到精通

    原文地址:http://www.cnblogs.com/helloIT/articles/5095668.html /***************************************** ...

随机推荐

  1. HDU 3697 Selecting courses(贪心)

    题目链接:pid=3697" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=3697 Prob ...

  2. 转载:android——eclipse如何去除Ctrl+shift+R组合键查找到的.class文件

    转载自:http://blog.csdn.net/virgilli/article/details/22500409 AS里面的build文件下一堆的.class 文件,当你要定位资源文件的时候,有些 ...

  3. Js字面变量,定义问题

    Js字面变量.浏览器的版本问题:

  4. js 操作剪切板

    1.IE浏览器 window.clipboardData: setData() //设置值 getData()//获取值 clearData()//删除值 /******* ** IE 浏览器下支持w ...

  5. Android SQLite API的使用(非原创)

    1.使用SQLite的API来进行数据库的添加.删除.修改.查询 package com.example.sqlitedatabase.test; import android.content.Con ...

  6. AVT Vimba与OpenCV环境配置

    近来,由于项目需求,需要使用AVT的一款相机采集图像并进行相应的算法处理.环境的配置过程较为复杂,特此记录,以做备忘.也给有需要的小伙伴们一些key point的分享. 搭建环境:Windows7 + ...

  7. ORACLE控制文件一致性【weber出品】

    一.首先控制文件有什么作用呢? 控制文件记录了如下信息:1.数据库的创建时间2.数据文件的位置3.日志文件的位置等作用是指导数据库 找到数据文件,日志文件并将数据库启动到 open 状态. 与其用文字 ...

  8. 此项目的默认Web访问模式设置为文件共享, 但是无法从路径(此为转贴)

    故障现象: 当你打开ASP.NET Web项目时,如果出现这样的错误提示:提示窗口标题: Web访问失败提示内容: 此项目的默认Web访问模式设置为文件共享, 但是无法从路径“...”打开“...”处 ...

  9. #JavaScript对象与继承

    JavaScript对象与继承 JavaScript是我在C语言之后接触的第二门编程语言,大一暑假的时候在图书馆找了一本中国人写的JavaScript程序设计来看.那个时候在编程方面几乎还是小白,再加 ...

  10. String类的使用说明

    (1)Length()取一个字符串的长度:public int length(); public calss StringLength1{ public static void main(String ...