JS+Ajax实现百度智能搜索框


Posted in Javascript onAugust 04, 2017

首先浏览实现后的结果,输入一个a之后会出现包含a的下拉列表,当我们点击某一个的时候,搜索框中就会出现点击的值。实现所需要的主要是ajax+js。

JS+Ajax实现百度智能搜索框

前端search.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
  pageEncoding="UTF-8"%> 
<html> 
<head> 
<title>Insert title here</title> 
<script src="js/jquery.min.js"></script> 
<style type="text/css"> 
  *{ 
   margin: 0 auto; 
   padding: 0; 
  } 
  li{ 
    margin:0; 
    height: 20px; 
    width: 200px; 
    list-style: none; 
  } 
  /* #c li:HOVER{ 
   background-color: #F9F9F9; 
  } */ 
  .onmouse{ 
   background-color: #F9F9F9; 
  }  
  .outmouse{ 
   background-color:white; 
  } 
  #contain{ 
   width: 50%; 
  } 
</style> 
<!-- jquery --> 
<script type="text/javascript"> 
var xmlHttp; 
  function getMoreContents() { 
  var content=document.getElementById("keyword"); 
  if(content.value==""){ 
    ClearContent(); 
    return;//如果不设置,传到后台的是空值,所有的值都会被输出 
  } 
  xmlHttp=creatXMLHttp(); 
  //alert(xmlHttp); 
  //要给服务器发送数据 
  var url="searchServlet?keyword="+escape(content.value); 
  xmlHttp.open("GET",url,true); 
  xmlHttp.onreadystatechange=callback; 
  xmlHttp.send(null); 
} 
  //获取XMLHttp对象 
 function creatXMLHttp() { 
  var xmlHttp; 
  if(window.XMLHttpRequest){ 
    xmlHttp=new XMLHttpRequest(); 
  } 
  if(window.ActiveXObject) 
  { 
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    if(!xmlHttp){ 
      xmlHttp=new ActiveXOject("Msxml2.XMLHTTP"); 
    } 
  } 
  return xmlHttp; 
} //获取XMLHttp对象 
  function callback() { 
  if(xmlHttp.readyState==4 && xmlHttp.status==200){ 
     var result=xmlHttp.responseText; 
     //解析数据 
     var json=eval("("+result+")"); 
     //动态显示数据,线束数据在输入框对的下面 
     setContent(json); 
  } 
} 
//设置关联数据的展示 
function setContent(contents) { 
  ClearContent(); 
  var size=contents.length; 
  for(var i=0;i<size;i++) 
    { 
     var nextNode=contents[i];//json格式的第i个数据 
     var li =document.createElement("li"); 
     li.onmouseover=function(){ 
       this.className="onmouse"; 
       document.getElementById("keyword").value=this.innerHTML; 
     } 
     li.onmouseout=function(){ 
       this.className="outmouse"; 
     } 
     var text=document.createTextNode(nextNode); 
     li.appendChild(text); 
     document.getElementById("c").appendChild(li); 
    } 
} 
//清空数据 
function ClearContent() { 
  document.getElementById("c").innerHTML=""; 
} 
//当控件失去焦点时,清空数据 
function outFouce() { 
  ClearContent(); 
} 
//获得焦点时, 
</script> 
</head> 
<body> 
  <div id="contain"> 
    <div style="height: 20px;"> 
      <input type="text" id="keyword" style="size:50px;" onkeyup="getMoreContents()" onblur="outFouce()" onfocus="getMoreContents()">  
      <input type="button" id="bu" value="百度一下" style=""> 
    </div> 
    <div id="popDiv"> 
     <ul id="c"> 
       <li></li> 
     </ul> 
    </div> 
  </div> 
</body> 
</html>

后台searchServlet.Java

package search; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
import net.sf.json.JSONArray; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
/** 
 * Servlet implementation class searchServlet 
 */ 
@WebServlet("/searchServlet") 
public class searchServlet extends HttpServlet { 
  private static final long serialVersionUID = 1L; 
  static List<String> datas=new ArrayList<String>(); 
  static {//假数据,模拟数据库读取 
    datas.add("ajax"); 
    datas.add("bjax"); 
    datas.add("ajaxfd"); 
    datas.add("bfvd"); 
    datas.add("dafdx"); 
    datas.add("fdax"); 
    datas.add("ahg"); 
    datas.add("ddx"); 
  } 
  /** 
   * @see HttpServlet#HttpServlet() 
   */ 
  public searchServlet() { 
    super(); 
    // TODO Auto-generated constructor stub 
  } 
  /** 
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
   */ 
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    doPost(request, response); 
  } 
  /** 
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
   */ 
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    request.setCharacterEncoding("UTF-8"); 
    response.setCharacterEncoding("UTF-8"); 
    String keyword=request.getParameter("keyword"); 
    //System.out.println(keyword); 
    List<String> listdata= getData(keyword); 
  // 返回json,以流的形式写到前台 
    response.getWriter().write(JSONArray.fromObject(listdata).toString()); 
  } 
  //获取假数据中符合条件的值 
  public List<String> getData(String keyword) 
  { 
    List<String> list=new ArrayList<String>(); 
    for(String data:datas) 
    { 
      if(data.contains(keyword)){ 
        list.add(data); 
      } 
    } 
    return list; 
  } 
}

xml配置

<span style="font-size:18px;"><strong><?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"> 
 <servlet> 
  <servlet-name>searchServlet</servlet-name> 
  <servlet-class>search.searchServlet</servlet-class> 
 </servlet> 
 <servlet-mapping> 
  <servlet-name>searchServlet</servlet-name> 
  <url-pattern>/search/searchServlet</url-pattern> 
 </servlet-mapping> 
 <display-name>DropMeum</display-name> 
 <welcome-file-list> 
  <welcome-file>index.html</welcome-file> 
  <welcome-file>index.htm</welcome-file> 
  <welcome-file>index.jsp</welcome-file> 
  <welcome-file>default.html</welcome-file> 
  <welcome-file>default.htm</welcome-file> 
  <welcome-file>default.jsp</welcome-file> 
 </welcome-file-list> 
</web-app></strong></span>

目录结构

JS+Ajax实现百度智能搜索框

总结

以上所述是小编给大家介绍的JS+Ajax实现百度智能搜索框,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery select标签操作代码段
May 16 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
Feb 23 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Oct 24 Javascript
使用js操作css实现js改变背景图片示例
Mar 10 Javascript
jquery获取html元素的绝对位置和相对位置的方法
Jun 20 Javascript
jQuery ajax调用WCF服务实例
Jul 16 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
js实现tab选项卡切换功能
Jan 13 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 jQuery
详解使用Visual Studio Code对Node.js进行断点调试
Sep 14 Javascript
解决vue 路由变化页面数据不刷新的问题
Mar 13 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
vue插件vue-resource的使用笔记(小结)
Aug 04 #Javascript
分享Bootstrap简单表格、表单、登录页面
Aug 04 #Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
Aug 04 #Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 #jQuery
vue修改vue项目运行端口号的方法
Aug 04 #Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
Aug 04 #Javascript
微信小程序 本地图片按照屏幕尺寸处理
Aug 04 #Javascript
You might like
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
PHP.vs.JAVA
2016/04/29 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
Python中的默认参数实例分析
2018/01/29 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
详解Python3 pandas.merge用法
2019/09/05 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
浅析python连接数据库的重要事项
2021/02/22 Python
会计实习自我鉴定
2013/12/04 职场文书
关爱老人标语
2014/06/21 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
爱心助学感谢信
2015/01/21 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
培训简讯范文
2015/07/20 职场文书
小学中队长竞选稿
2015/11/20 职场文书
python中的random模块和相关函数详解
2022/04/22 Python
MySQL自定义函数及触发器
2022/08/05 MySQL