今天小编就为大家分享一篇使用Ajax模仿百度搜索框的自动提示功能实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

啊啊,熬夜了。今天学习了ajax给我的感觉就是,”哇塞“ajax好酷炫哦,(额。。。后端狗,接触到了大前端的魅力了),这么晚了还是直奔主题把。Let's go!

百度搜索提示框,我想大家都很熟悉了把,是什么样子我也就不再赘述。直接看代码

来我们写一个简陋的jsp页面 Look! 是这个样子的

下面是代码:

<%@ 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>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Test Baidu</title>
 </head>
 <body>
 	<!--
  	文本输入框
  -->
 	<div id="serach">
 		<input type="text" name="text" id="text" />
 		<input type="submit" value="搜索" />
 	</div>
 	
 	<!--
  	提示下拉框
  -->
  <div id="tips" style="display: none; 
  	width: 171px; border: 1px solid pink";>
  </div>
  
 	</body>
 	<script>
 		window.onload=function(){
 			//获取文本输入框
 			var textElment = document.getElementById("text");
 			//获取下提示框
 			var div = document.getElementById("tips");
 			textElment.onkeyup=function(){
 				//获取用户输入的值
 				var text = textElment.value;
 				//如果文本框中没有值,则下拉框被隐藏,不显示
 				if(text==""){
 					div.style.display="none";
 					return;
 				}
 				//获取XMLHttpRequest对象
 				var xhr = new XMLHttpRequest();
 				//编写回调函数
 				xhr.onreadystatechange=function(){
 					//判断回调的条件是否准备齐全
 					if(xhr.readyState==4){
 						if(xhr.status==200){
 							//取的服务器端传回的数据
 							var str = xhr.responseText;
 							
 							//判断传回的数据是否为空,若是则直接返回,不显示
 							if(str==""){
 								return;
 							}
 							//我们将会在服务器端把数据用 , 隔开,当然这里也可以使用json
 							var result = str.split(",");
 							var childs = "";
 							//遍历结果集,将结果集中的每一条数据用一个div显示,把所有的div放入到childs中
 							for(var i=0; i<result.length;i++){
 								childs += "<div onclick='Write(this)' onmouseout='recoverColorwhenMouseout(this)' onmouseover='changeColorwhenMouseover(this)'>"+result[i]+"</div>";
 							}
 							//把childs 这div集合放入到下拉提示框的父div中,上面我们以获取了
 							div.innerHTML=childs;
 							div.style.display="block";
 						
 						}
 					}
 				}
 			
 				//创建与服务器的连接
 				xhr.open("GET","${pageContext.request.contextPath}/test?text="+text);
 			
 
 				//发送
 				xhr.send();
 			}
 		}
 		//鼠标悬停时改变div的颜色
 		function changeColorwhenMouseover(div){
 			div.style.backgroundColor="pink";
 		}
 		//鼠标移出时回复div颜色
 		function recoverColorwhenMouseout(div){
 			div.style.backgroundColor="";
 		}
 		//当鼠标带点击div时,将div的值赋给输入文本框
 		function Write(div){
 			//将div中的值赋给文本框
 			document.getElementById("text").value=div.innerHTML;
 			
 			//让下拉提示框消失
 			
 			div.parentNode.style.display="none";
 		}
 	</script>
</html>

再看servlet:

package com.zhuxingyi.servlet;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * 百度下拉框服务器端
 */
@WebServlet("/test")
public class test extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取前端传入的数据
		String text = request.getParameter("text");
		//我们在这里也还是向list集合中添加数据,模拟数据库的查询操作
		System.out.println(text);
		List<String> list =new ArrayList<>();
		list.add("zhuxingyi");
		list.add("zhuwei");
		list.add("zhuyuanz");
		list.add("zhude");
		
		//将数据 转换成字符串
		String str = "";
		if(text.startsWith("z")) {
			for(int i=0;i<list.size();i++) {
				if(i>0) {
					str+=",";
				}
				str+=list.get(i);
			}
			//将处理好的数据传回给客户端
			response.getWriter().write(str);
		}
		
	}
 
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
 
}

演示一下看看呢,(很尴尬,楼主还不会做gif图呢,各位先看看静态图把。。。)

输入‘z'试一试呢:

点击一下试一试呢:

Ok了,这就是一个简单的模仿百度的搜索框啦,以上有不足的地方你一定要指出哦,谢谢。拜啦

以上这篇使用Ajax模仿百度搜索框的自动提示功能实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持爱安网。

最新资讯
人民日报海外版评网络版权保护:滥用权利需严查

人民日报海外版评网络

什么是版权保护的初心?回答好这个问题,才能找到供需双赢
我国第一艘核潜艇没用一颗外国螺丝钉

我国第一艘核潜艇没用

4月23日,一场盛大的阅兵活动在青岛举行,中国海军的新型
微信支付团队:被冻结账户系安全风险警报致延迟结算

微信支付团队:被冻结账

微信支付回应称,在商户根据系统指引提交完整申诉资料的
洞察号首次观测到火星地震

洞察号首次观测到火星

NASA今天宣布,洞察号火星探测器在今年4月6日监测到一次
瑞幸冲刺上市,快速膨胀背后有多少隐忧?

瑞幸冲刺上市,快速膨胀

互联网咖啡通过数字技术与“无限场景”的理念,试图打破
TESS望远镜发现首颗地球大小系外行星 或有大气层

TESS望远镜发现首颗地

“苔丝”望远镜宣布找到了第一颗与地球大小相对接近的
最新文章
使用Ajax模仿百度搜索框的自动提示功能实例

使用Ajax模仿百度搜索

今天小编就为大家分享一篇使用Ajax模仿百度搜索框的自
解决ajax异步请求返回的是字符串问题

解决ajax异步请求返回

这篇文章主要介绍了解决ajax异步请求返回的是字符串问
Ajax引擎 ajax请求步骤详细代码

Ajax引擎 ajax请求步

这篇文章主要为大家详细介绍了Ajax引擎 ajax请求步骤
Ajax实现表格中信息不刷新页面进行更新数据

Ajax实现表格中信息不

这篇文章主要为大家详细介绍了Ajax实现表格中的信息不
ajax实现页面的局部加载

ajax实现页面的局部加

这篇文章主要为大家详细介绍了ajax实现页面的局部加载
爬取今日头条Ajax请求

爬取今日头条Ajax请求

今天小编就为大家分享一篇关于爬取今日头条Ajax请求的