亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

Servlet+Ajax實現智能搜索框智能提示功能

2024-09-01 08:30:22
字體:
來源:轉載
供稿:網友

說到搜索框,相信大家都很熟悉,搜索框是我們每天工作都必備的,其實大家是否注意到有許多搜索功能,當輸入內容時,都會有提示?今天就這個問題,錯新技術頻道帶大家學習Servlet+Ajax實現智能搜索框智能提示功能。

效果圖

這里寫圖片描述

其基本原理:

1.給搜索框編寫js綁定事件onkeyup(鍵盤輸入時)、onfocus(當鼠標點擊搜索框外的時候清空提示)

2.首先獲得用戶輸入、之后將獲得的數據傳給服務器,服務器將數據傳給后臺,后臺獲取服務器傳來的數據進行處理,得到關聯數據,向前端返回json格式,前端通過回調函數,將返回來的json解析成文本,將文本傳輸到搜索框下方的展示窗

如下為支持json的jar包

這里寫圖片描述

search.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>ajax搜索</title><script type="text/javascript">//獲得更多關聯信息的函數function getMore(){ var xmlHttp; //首先獲得用戶的輸入 var content = document.getElementById("keyword"); if(content.value==""){  keywordBlur();//執行一下清空方法,使搜索框在無數據的時候,下方殘留數據也動態清空  return; } //alert(content.value); //要給服務器發送用戶輸入的內容,要創建對象,叫XmlHttp對象 //xmlHttp=獲得XmlHttp對象 xmlHttp=CreatXMLHttp(); //alert(xmlHttp); //要給服務器發送數據 var url="serch?keyword="+escape(content.value); //如果不用escape這個函數轉化一下的話,傳中文會有問題 //true表示javascript的腳本會在send()方法之后繼續執行,而不會等待來自服務器的相應 xmlHttp.open("GET",url,true); //xmlHttp綁定一個回調方法去接受服務器傳來的相應,會在xmlHttp狀態改變的時候被調用 //xmlHttp有0~4的狀態,只關心4的方法 //4為complete狀態,表示交互完成,當交互完成時才會調用回調方法 xmlHttp.onreadystatechange=callback; xmlHttp.send(null);//send里面發送的是內容體,但參數在URL里已經都寫完了 //回調函數==!!注意 這里回調方法要在方法內創建,因為創建的xmlHttp對象不是全局變量 //是在getMore()方法里創建的,可以將變量提取出來,變成全局變量 function callback(){  if (xmlHttp.readyState==4){   //200代表服務器相應成功。。。404代表資源未找到。。500服務器內部錯誤   if(xmlHttp.status==200){    //交互成功,獲得相應的數據,是文本格式    var result=xmlHttp.responseText;    //解析json格式    var json=eval("("+result+")");//要在兩邊加個小括號,js才能認識    //獲得數據之后就可以開始展示了。在輸入框的下邊展示    setContent(json);   }  } } //設置關聯數據展示,參數代表的是服務器傳遞過來的關聯數據 function setContent(contents){  //setLocation();//設置跟輸入框一樣寬度  keywordBlur();//在每次得到值之前先清空一下之前的殘留數據  var size=contents.length;//根據關聯的數據長度,來生成多少<tr>  //設置內容  for(var i=0;i<size;i++){   //不用appendChild()方法是因為不同瀏覽器可能不兼容該方法   var nextNode=contents[i];//代表json格式的第i個元素    var newRow=content_table_body.insertRow();//創建行   var newCell=newRow.insertCell();//創建單元格   newCell.innerHTML=contents[i];//將數據賦值給單元格  }  }}//獲得XmlHttp對象function CreatXMLHttp(){ //要考慮不同瀏覽器的寫法 //大多數瀏覽器使用 var xmlHttpReq; if(window.XMLHttpRequest){//火狐  xmlHttpReq=new XMLHttpRequest(); }else{  /* if(window.ActiveXObject){   xmlHttpReq=neww ActiveXObject("Microsoft.XMLHTTP");   //例如ie有很多版本,不一定能創建出來這個對象,所以要添加以下一個判斷   //換一種方法,保證創建   if(!xmlHttp){    xmlHttpReq=new ActiveObject("Msxml2.XMLHTTP");   }  } */  //一定要如下格式寫 上述格式火狐IE親測不好使   try { //IE    xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");   }   catch (e) {    try {//IE 瀏覽器     xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");    }    catch (e) {    }   } } return xmlHttpReq;}//失去焦點的時候function keywordBlur(){ //要獲得body的元素長度,才能知道要遍歷多少次  var contentTableBody=document.getElementById("content_table_body");   var size=contentTableBody.childNodes.length;    //因為是刪除子節點,所以是從后往前才能刪,同二叉樹,刪除子節點  for(var i=size-1;i>=0;i--){    contentTableBody.removeChild(contentTableBody.childNodes[i]);   }   document.getElementById("popDiv").style.border="none"; }</script><style type="text/css">/* #mydiv{ position: absolute; left:30%; top:50%; margin-left: 100px;} */.mouseOver{ background: #708090; color: #FFFAFA;}.mouseOut{ background: #FFFAFA; color: #000000;}</style></head><body> <div id="mydiv">  <!-- 輸入框 -->  <input type="text" id="keyword" size="50" onblur="keywordBlur()" onkeyup="getMore()" onfocus="getMore()"/>  <input type="button" value="百度一下" wise="50px">  <!-- 下面是內容展示的區域 -->  <div id="popDiv">   <table id="contentTable" bgcolor="#FFFAFA" border="0" cellpadding="0" cellspacing="0">    <tbody id="content_table_body">    <!-- 這個是動態查詢出來的數據顯示的地方 -->     <!-- <tr><td>ajax1</td></tr>    <tr><td>ajax2</td></tr>    <tr><td>ajax3</td></tr> -->    </tbody>   </table>  </div> </div></body></html>

SearchServlet.class

package com.ninka;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;public class SearchServlet extends HttpServlet{ static List<String> datas = new ArrayList<String>(); static{  datas.add("ajax1");  datas.add("ajax2");  datas.add("ajax3");  datas.add("bichi1");  datas.add("bichi2");  datas.add("php");   datas.add("javascript");   datas.add("java");   datas.add("html");  } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {  //設置下編碼格式  request.setCharacterEncoding("UTF-8");  response.setCharacterEncoding("UTF-8");  System.out.println("123");  //首先獲得客戶端傳來的數據,,注意傳過來的參數關鍵字一定要寫對,否則會空指針異常  String keyword = request.getParameter("keyword");  //獲得關鍵字之后進行處理,得到關聯數據  List<String> listData = getData(keyword);  //返回json格式  System.out.println(JSONArray.fromObject(listData));  //JSONArray.fromObject(listData);  response.getWriter().write(JSONArray.fromObject(listData).toString()); } //獲得關聯數據方法 public List<String> getData(String keyword){  List<String> list = new ArrayList<String>();  for(String data:datas){   //如果傳遞過來的數據,屬于詞庫里面的話,那么就把包含關鍵詞的數據打包成list,向客戶端傳   if(data.contains(keyword)){    list.add(data);   }  }  return list; }}

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee  http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>ajaxtest</display-name> <welcome-file-list>  <welcome-file>search.jsp</welcome-file> </welcome-file-list> <servlet> <!-- 為什么要用search?因為在js中定義url的時候寫的是search -->  <servlet-name>search</servlet-name>  <servlet-class>com.ninka.SearchServlet</servlet-class> </servlet> <servlet-mapping>  <servlet-name>search</servlet-name>  <url-pattern>/</url-pattern> </servlet-mapping></web-app>

以上所述是小編給大家介紹的Servlet+Ajax實現智能搜索框智能提示功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對錯新技術頻道網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久高清视频免费| 亚洲精品久久久久久久久| 国产91在线播放| 国产精品成av人在线视午夜片| 日韩亚洲精品视频| 亚洲视频在线观看| 91精品在线看| 国产精品美女网站| 神马国产精品影院av| 久久夜精品香蕉| 国产精品18久久久久久首页狼| 国产精品入口夜色视频大尺度| 国产不卡在线观看| 欧洲成人性视频| 久久国产一区二区三区| 国产精品普通话| 在线观看精品自拍私拍| 中文字幕av一区二区| 中文字幕久热精品在线视频| 成人在线视频网站| 欧美一乱一性一交一视频| 日韩视频免费在线观看| 国产精品久久久久久久午夜| 日韩视频免费中文字幕| 日韩欧美aⅴ综合网站发布| 国产精品高潮呻吟久久av无限| 日韩av电影手机在线观看| 精品日韩视频在线观看| 国产成人亚洲综合91| www.日韩.com| 成人免费网站在线| 亚洲一区二区久久| 亚洲香蕉成视频在线观看| 国产精品伦子伦免费视频| 久久亚洲一区二区三区四区五区高| 日韩综合中文字幕| 亚洲电影在线观看| 精品精品国产国产自在线| 欧美成人全部免费| 日本电影亚洲天堂| 姬川优奈aav一区二区| 亚洲精品少妇网址| 日韩国产激情在线| 亚洲精品国产成人| 日韩精品亚洲精品| 69**夜色精品国产69乱| 91亚洲人电影| 久久久极品av| 日韩欧美在线第一页| 国产精品久久久久久久久久久久| 91产国在线观看动作片喷水| 日韩av在线导航| 日韩经典中文字幕在线观看| 日本欧美精品在线| 亚洲国产精彩中文乱码av在线播放| 国产视频亚洲视频| 欧美黄色免费网站| 久久97久久97精品免视看| 国内精品小视频| 欧美一区二区三区精品电影| 日韩美女av在线免费观看| 亚洲第一在线视频| 国产综合香蕉五月婷在线| 91国在线精品国内播放| 久久伊人精品一区二区三区| 欧美日韩国产999| 欧美激情乱人伦一区| 亚洲白拍色综合图区| 国产成人精品网站| 97婷婷涩涩精品一区| 91中文字幕在线观看| 国产精品99久久久久久www| 久久视频在线看| 欧美视频中文字幕在线| 永久免费精品影视网站| 日韩视频免费观看| 91网站免费观看| 深夜精品寂寞黄网站在线观看| 国产精品久久久久久久天堂| 久久综合伊人77777| 欧美精品在线观看91| 7777精品视频| 日韩欧美亚洲一二三区| 欧美—级高清免费播放| 欧美精品午夜视频| 欧美日韩在线视频一区二区| 57pao成人永久免费视频| 亚洲激情中文字幕| 成人有码在线播放| 亚洲片国产一区一级在线观看| 奇门遁甲1982国语版免费观看高清| 久久av.com| 成人福利视频在线观看| 国模gogo一区二区大胆私拍| 国产亚洲精品日韩| 亚洲人成电影网站色www| 国产精品网址在线| 国产ts一区二区| 亚洲福利视频在线| 国产亚洲精品久久久久久| 91在线播放国产| 成人激情视频在线播放| 97视频免费看| 日韩在线精品视频| 中文字幕av一区中文字幕天堂| 国产精品男人的天堂| 尤物tv国产一区| 国产欧美一区二区三区久久人妖| 日本乱人伦a精品| 91精品视频播放| 日韩激情av在线播放| 国产欧美一区二区三区四区| 欧美激情欧美激情在线五月| 久久99久久久久久久噜噜| 国产精品久久久久9999| 中文字幕欧美亚洲| 一本色道久久88综合日韩精品| 欧美一区二区视频97| 成人福利免费观看| 麻豆精品精华液| 欧美日韩国产精品一区二区不卡中文| 久久天天躁夜夜躁狠狠躁2022| 欧美视频在线免费| 色综合91久久精品中文字幕| 91国产美女视频| 日韩av综合中文字幕| 欧美天天综合色影久久精品| 日韩在线播放一区| 国产一区二区欧美日韩| 91久久久久久久久久久| 黄色成人在线播放| 91亚洲永久免费精品| 国产精品日韩一区| 欧美久久精品一级黑人c片| 精品一区二区三区电影| 亚洲第一中文字幕| 亚洲人成电影网站色www| 狠狠躁天天躁日日躁欧美| 久久精品中文字幕| 日韩动漫免费观看电视剧高清| 91精品视频大全| 亚洲a中文字幕| 日韩国产在线看| 日韩成人av网| 原创国产精品91| 日本一区二区不卡| 欧美一级电影免费在线观看| 91网站免费看| 成人免费看黄网站| 国产精品www色诱视频| 国产精品观看在线亚洲人成网| 北条麻妃久久精品| 久久九九全国免费精品观看| 亚洲激情视频在线| 欧美激情高清视频| 亚洲偷熟乱区亚洲香蕉av| 久久久久久久久国产精品| 日韩美女主播视频| 日韩电影在线观看永久视频免费网站| xvideos亚洲人网站| 久久久久国色av免费观看性色| 一区二区三区久久精品| 欧美日韩国产综合新一区| 91色在线观看|