最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ajax實(shí)現(xiàn)搜索引擎自動(dòng)補(bǔ)全功能

 更新時(shí)間:2017年04月05日 11:55:37   作者:甄情  
本文主要介紹了Ajax實(shí)現(xiàn)搜索引擎自動(dòng)補(bǔ)全功能的實(shí)例解析。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧

每當(dāng)我們遇到一些問(wèn)題時(shí)候,我們會(huì)百度一下,你是有過(guò)我們的問(wèn)題還沒(méi)打完就已經(jīng)出現(xiàn)的經(jīng)歷?

如下圖:

天貓:

京東:

這時(shí)候的你是否想到如何實(shí)現(xiàn)這個(gè)功能?

我們的網(wǎng)頁(yè)明明沒(méi)有刷新,可是卻出現(xiàn)了數(shù)據(jù)的交互,也就是Ajax的強(qiáng)大之處。

下面以一個(gè)例子來(lái)實(shí)現(xiàn)。

搜索框和搜索按鈕,我們希望在搜索框輸入部分書(shū)名時(shí),能夠?qū)崿F(xiàn)書(shū)名的自動(dòng)補(bǔ)全功能。每當(dāng)點(diǎn)擊了相應(yīng)的書(shū)名,就把內(nèi)容輸入到搜索框。

這里寫(xiě)圖片描述

對(duì)應(yīng)的代碼

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

為了存貯自動(dòng)補(bǔ)全的文字,我們使用div標(biāo)簽

設(shè)置背景色為白色,絕對(duì)布局。并且默認(rèn)不顯示。

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

在百度的補(bǔ)全功能中我們發(fā)現(xiàn),每輸入一個(gè)字,對(duì)應(yīng)的補(bǔ)全文字就會(huì)更新,所以我們要為搜索框設(shè)置鍵盤(pán)抬起事件(keyup),然后就是Ajax實(shí)現(xiàn)異步交互。

js代碼:

$(".inputtable").keyup(function(){
  var content=$(this).val();
  //如果當(dāng)前搜索內(nèi)容為空,無(wú)須進(jìn)行查詢(xún)
  if(content==""){
   $("#context1").css("display","none");
   return ;
  }
  //由于瀏覽器的緩存機(jī)制 所以我們每次傳入一個(gè)時(shí)間
  var time=new Date().getTime();
  $.ajax({
   type:"get",
   //新建一個(gè)名為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++){
     //每一個(gè)div還有鼠標(biāo)移出、移入點(diǎn)擊事件
     html+="<div onclick='setSearch_onclick(this)' onmouseout='changeBackColor_out(this)' onmouseover='changeBackColor_over(this)'>"+res[i]+"</div>";
    }
    $("#context1").html(html);
    //顯示為塊級(jí)元素
    $("#context1").css("display","block");
   }
  });
 });

我們的鼠標(biāo)在選擇到自動(dòng)補(bǔ)全的內(nèi)容時(shí),我們會(huì)發(fā)現(xiàn)內(nèi)容的那一行會(huì)變色,即onmouseover事件,離開(kāi)時(shí)恢復(fù)原色onmouseout事件,點(diǎn)擊時(shí)將內(nèi)容填寫(xiě)到搜索框onclick事件。所以在上面的代碼中我們會(huì)這樣寫(xiě)

    var html="";
    for(var i=0;i<res.length;i++){
     //每一個(gè)div還有鼠標(biāo)移出、移入點(diǎn)擊事件
     html+="<div onclick='setSearch_onclick(this)' onmouseout='changeBackColor_out(this)' onmouseover='changeBackColor_over(this)'>"+res[i]+"</div>";
    }

而其三種事件對(duì)應(yīng)的js代碼如下:

//鼠標(biāo)移動(dòng)到內(nèi)容上
 function changeBackColor_over(div){
  $(div).css("background-color","#CCCCCC");
 }
 //鼠標(biāo)離開(kāi)內(nèi)容
 function changeBackColor_out(div){
  $(div).css("background-color","");
 }
 //將點(diǎn)擊的內(nèi)容放到搜索框
 function setSearch_onclick(div){
  $(".inputtable").val(div.innerText);
  $("#context1").css("display","none");
 }

servlet:向server調(diào)用相應(yīng)的業(yè)務(wù)然后返回查詢(xún)的結(jié)果

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html;charset=utf-8");
  request.setCharacterEncoding("utf-8");
  //獲取搜索框輸入的內(nèi)容
  String name=request.getParameter("name");
  name=new String(name.getBytes("iso-8859-1"), "utf-8");
  //向server層調(diào)用相應(yīng)的業(yè)務(wù)
  BooksServer booksServer=new BooksServer();
  String res=booksServer.findBooksAjax(name);
  //返回結(jié)果
  response.getWriter().write(res);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doGet(request, response);
 }

service層

把dao層查詢(xún)的所有書(shū)名拼接為一個(gè)字符串。

//查詢(xún)所有的書(shū)本名
 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層

根據(jù)部分書(shū)名,查詢(xún)類(lèi)似的書(shū)名

//根據(jù)部分書(shū)名,查詢(xún)類(lèi)似的書(shū)名
 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;
 }

運(yùn)行結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

最新評(píng)論

新乡县| 通河县| 和龙市| 乌审旗| 长宁县| 财经| 梅河口市| 深圳市| 永善县| 黄骅市| 姜堰市| 嵊州市| 西乌珠穆沁旗| 萍乡市| 黎川县| 三门峡市| 富顺县| 西林县| 江陵县| 漳州市| 建湖县| 磴口县| 西畴县| 民勤县| 永寿县| 东安县| 阿城市| 贡觉县| 武城县| 娄烦县| 东莞市| 高安市| 白河县| 获嘉县| 尖扎县| 城口县| 本溪市| 禹州市| 阿拉善右旗| 贞丰县| 抚远县|