1. 程式人生 > >Ajax實現搜尋引擎自動補全功能

Ajax實現搜尋引擎自動補全功能

上程式碼:

搜素框

Search <input
                    type="text" name="name" class="inputtable" 
                    id="name" /> 
                    <input type="image" src="images/serchbutton.gif"
                    border="0" style="margin-bottom:-4px">

顯示模糊查詢結果div。設定背景色為白色,絕對佈局。並且預設不顯示。

<div
id="context1" style="background-color:white; border: 1px solid red;width:128px;position: absolute;top: 133px;left:944px;display:none" > </div>

我們要為搜尋框設定鍵盤擡起事件(keyup),然後就是Ajax實現非同步互動。

$(".inputtable").keyup(function(){
  var content=$(this).val();
  //如果當前搜尋內容為空,無須進行查詢
  if(content==""){
      $("#context1"
).css("display","none"); return ; } //由於瀏覽器的快取機制 所以我們每次傳入一個時間 var time=new Date().getTime(); $.ajax({ type:"get", //新建一個名為findBooksAjaxServlet的servlet url:"${pageContext.request.contextPath}/servlet/findBooksAjaxServlet", data:{name:content,time:time}, success:function
(data){
//拼接html var res=data.split(","); var html=""; for(var i=0;i<res.length;i++){ //每一個div還有滑鼠移出、移入點選事件 html+="<div onclick='setSearch_onclick(this)' onmouseout='changeBackColor_out(this)' onmouseover='changeBackColor_over(this)'>"+res[i]+"</div>"; } $("#context1").html(html); //顯示為塊級元素 $("#context1").css("display","block"); } }); });

我們的滑鼠在選擇到自動補全的內容時,我們會發現內容的那一行會變色,即onmouseover事件,離開時恢復原色onmouseout事件,點選時將內容填寫到搜尋框onclick事件。所以在上面的程式碼中我們會這樣寫

var html="";
                for(var i=0;i<res.length;i++){
                    //每一個div還有滑鼠移出、移入點選事件
                    html+="<div onclick='setSearch_onclick(this)' onmouseout='changeBackColor_out(this)' onmouseover='changeBackColor_over(this)'>"+res[i]+"</div>";
                }

而其三種事件對應的js程式碼如下:

//滑鼠移動到內容上
 function changeBackColor_over(div){
     $(div).css("background-color","#CCCCCC");
 }
 //滑鼠離開內容
 function changeBackColor_out(div){
     $(div).css("background-color","");
 }
 //將點選的內容放到搜尋框
 function setSearch_onclick(div){
     $(".inputtable").val(div.innerText);
     $("#context1").css("display","none");
 }

servlet:向server呼叫相應的業務然後返回查詢的結果

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        //獲取搜尋框輸入的內容
        String name=request.getParameter("name");
        name=new String(name.getBytes("iso-8859-1"), "utf-8");
        //向server層呼叫相應的業務
        BooksServer booksServer=new BooksServer();
        String res=booksServer.findBooksAjax(name);
        //返回結果
        response.getWriter().write(res);

    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doGet(request, response);

    }

service層
把dao層查詢的所有書名拼接為一個字串。

//查詢所有的書本名
    public String findBooksAjax(String name) {
        List<Object> nameList=booksDao.findBooksAjax(name);
        String res="";
        for (int i=0;i<nameList.size();i++) {
            if(i>0){
                res+=","+nameList.get(i);
            }else{
                res+=nameList.get(i);
            }
        }
        return res;
    }

dao層
根據部分書名,查詢類似的書名

//根據部分書名,查詢類似的書名
    public List<Object> findBooksAjax(String name) {
        QueryRunner qr=new QueryRunner(C3P0Util.getDataSource());
        try {
            return qr.query("select name from book where name like ?", new ColumnListHandler(),"%"+name+"%");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

相關推薦

Ajax實現搜尋引擎自動功能

上程式碼: 搜素框 Search <input type="text" name="name" class="inputtable" id="name" />

第三百六十八節,Python分布式爬蟲打造搜索引擎Scrapy精講—elasticsearch(搜索引擎)用Django實現搜索的自動功能

技術 django 分布 全功能 -s col ron 搜索 創建 第三百六十八節,Python分布式爬蟲打造搜索引擎Scrapy精講—用Django實現搜索的自動補全功能 elasticsearch(搜索引擎)提供了自動補全接口 官方說明:https://www

【easyui-combobox】下拉菜單自動功能Ajax獲取遠程數據源

combo -c -o efi 字段 data app script resp 這個是針對easyUI的下拉菜單使用的,Ajax獲取遠程數據源 HTML 頁面 <input id="uname" name="uname" class="easyui-combo

jquery的輸入框自動功能+ajax

image -- spa 數據 adding box utf 分類 .com jquery的輸入框自動補全功能+ajax 2017年05月10日 18:51:39 辣姐什麽鬼 閱讀數:1461 標簽: web前端 更多 個人分類: web前端

jupyter notebook自動功能實現

Jupyter notebook使用預設的自動補全是關掉的。要開啟自動補全,需修改預設配置。   命令列中輸入:ipython profile create 以上命令會在~/.ipython/profile_default/目錄下生成ipython_config.py和ipython_kern

Android實現登入郵箱的自動功能

先看下效果圖: 只要輸入到@符,就會開始聯想郵箱,樣式可以自己定義。 下面看下主要的程式碼: //這個就是我們繼承自MultiAutoCompleteTextView實現我們自定義的郵箱聯想元件 public class MailBoxAssociateView

Jquery實現自動功能

今天因為公司全去搞活動了,所以在網上看了一會兒jquery,在這裡詳細介紹一下基於jquery的autoComplete的實現。 首先,向大家看下自己實現的最簡單的結果: ![簡單效果](https://img-blog.csdn.net/201

asp.net + ajax + sqlserver 自動功能

程式碼下載頁面:http://download.csdn.net/detail/zhanghui_hn/6994105 說明:資料庫連線字串在web.config檔案中,為方便執行使用的是官方的Northwind資料庫。 參考(向其作者致敬): ²  http://ww

【輸入智慧提示功能】PHP+jQuery實現自動功能

前面手工寫了一個下拉自動補全功能,寫的簡單,只實現了滑鼠選擇的功能,不支援鍵盤選擇。由於專案很多地方要用到這個功能,所以需要用心做一下。發現select2這個外掛的功能可以滿足當前需求。 在使用jquery外掛select2的過程中遇到了一些疑惑,無論是穿json資料還

開啟mac terminal 命令/路徑自動功能

terminal 自動 menu 技術分享 bsp con 命令行 win big 用慣了windows命令行工具的按Tab自動補全路徑功能後,在mac terminal上敲命令很不習慣。其實mac terminal也有這個功能。 在命令行輸入nano .inputrc

pycharm代碼自動功能

har hit png parent bnl padding ans charm orm pycharm具有代碼自動補全的功能。無意中將其功能關閉,百度了好久才解決掉,所以把這次失誤記錄下來。那麽我們怎麽打開呢?在軟件的左上角找到File-》Power Save Mode,

Mac上git自動功能

怎麽 pro 執行 發現 文件中 -o 命名 重啟 vpd 在Mac上安裝了git之後,發現命令不能自動補全,使用起來非常不方便,本文介紹怎麽讓git命令能夠自動補全。 確保bash能夠自動補全在終端(本文使用的是OS X的終端)執行如下命令: brew list 看看是否

Eclipse自動功能輕松設置

自動提示 net img ces 自動補全 會有 tails trigger csdn Eclipse自動補全功能輕松設置 1.打開Eclipse->Window->Perferences 2.找到Java下的Editor下的Content Assist,右邊

eclipse自動功能的缺陷

  這周在做一些程式碼的重構,在重構的過程中,踩了一個eclipse的大坑!這裡記錄一下   在eclipse裡寫java程式碼,你寫好方法名字,再來個回車,eclipse會自動幫你把方法的引數給補全,補全的引數跟你在補全方法定義的引數名字“一致”,即我認為的效果是這樣的 p

kubectl命令自動功能

share -o ffffff img water process 避免 shadow 命令補全 我們在管理k8s集群的時候,避免不了使用kubectl命令工具,但是該命令還是挺復雜的,使用中也記不住那麽多的api選項,故這裏介紹一下kubectl命令補全工具的安裝。 1:

在eclipse中設定編碼自動功能

如果你用過Visual Studio的自動補全功能後,再來用eclipse的自動補全功能,相信大家會有些許失望。 但是eclipse其實是非常強大的,eclipse的自動補全沒有VS那麼好是因為eclipse的補全功能用的是預設設定。你只需要稍微修改一下就行了。 最簡單的修改方式是:Wi

微信小程式搜尋框自動功能

▶動態效果圖◀   ▶效果涉及到的input屬性◀ focus     Boolean     false     獲取焦點      bindinput &nb

PySide QLineEdit自動功能

#-*- coding:utf-8 -*- from PySide.QtGui import * from PySide.QtCore import * import math import sys import re import os impor

Eclipse中的文字自動功能(Java、html、javascript)

文字很枯燥,希望正在閱讀的您靜下心來細細的閱讀,跟著我的12345一步一步往下走,you will get success! 1.開啟eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Activat

讓vim支援c++程式碼自動功能

vim在預設情況下是沒有這個功能的,我們需要下載一個外掛和一個軟體來實現這個功能。 外掛:omnicppcomplete 軟體:ctags ctags一般系統預設就有。 下載並安裝外掛 omnicppcomplete: 解壓:unzip omincppcomplete.zip -d ~/.vim omnicp