一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Ajax實現搜索引擎自動補全功能

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

2020-09-06 15:23甄情 Java教程

本文主要介紹了Ajax實現搜索引擎自動補全功能的實例解析。具有很好的參考價值。下面跟著小編一起來看下吧

每當我們遇到一些問題時候,我們會百度一下,你是有過我們的問題還沒打完就已經出現的經歷?

如下圖:

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

天貓:

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

京東:

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

這時候的你是否想到如何實現這個功能?

我們的網頁明明沒有刷新,可是卻出現了數據的交互,也就是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實現異步交互。

js代碼:

$(".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實現搜索引擎自動補全功能

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!

原文鏈接:http://blog.csdn.net/su20145104009/article/details/63279276

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 扒开双腿猛进入爽爽视频ai | 国产人成77777视频网站 | 亚洲人成网站在线观看青青 | 18日本人 | 男人天堂网页 | 国产麻豆剧果冻传媒影视4934 | 无码欧美喷潮福利XXXX | 免费看成人毛片日本久久 | 男同桌脱我奶罩吸我奶作文 | 久青草国产97香蕉在线视频 | 国产成人精品免费久久久久 | 日产精品卡一卡2卡三卡乱码工厂 | 成人国产在线观看 | 满溢游泳池免费 | 免费xxxxx大片在线观看影视 | 色愉拍亚洲偷自拍 | 久久人妻少妇嫩草AV无码 | 国产亚洲99影院 | 欧美久草在线 | avtt在线观看| 国产一区在线播放 | 国产乱子伦在线观看不卡 | 久久国产伦子伦精品 | 日本不卡1卡2卡三卡网站二百 | 2019年国产不卡在线刷新 | 粗了大了 整进去好爽视频 刺激一区仑乱 | 无限韩国视频免费播放 | 好湿好紧好大野战 | 日韩欧美高清视频 | 小鸟酱视频在线观看 | 久久亚洲成a人片 | 99日影院在线播放 | 热门小说同人h改编h | 日韩欧美推理片免费在线播放 | 二次元美女内裤凹陷太深 | 国产一二区视频 | 暖暖中国免费观看高清完整版 | 99精品免费在线 | 火影小南被爆羞羞网站进入 | 五月桃花网婷婷亚洲综合 | 日韩欧美一区二区三区视频 |