jQuery ajax(自动补全)

目录

1. 为什么要使用Ajax

2. 方法

        2.1 $.ajax()方法

        2.2 jQuery $.post() 方法

        2.3 jQuery $.get() 方法

              语法:

3. 案例(自动补全)


1. 为什么要使用Ajax

        Ajax可以实现动态不刷新(局部刷新)
        就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。

2. 方法

        2.1 $.ajax()方法

                ajax() 方法用于执行 AJAX(异步 HTTP)请求。

                所有的 jQuery AJAX 方法都使用 ajax() 方法。该方法通常用于其他方法不能完成的请求。

                语法

        $.ajax({name:value, name:value, ... })

                该参数规定 AJAX 请求的一个或多个名称/值对

                实例

$("button").click(function(){
    $.ajax({url:"demo_test.txt",success:function(result){
        $("#div1").html(result);
    }});
});

        2.2 jQuery $.post() 方法

              $.post() 方法通过 HTTP POST 请求从服务器上请求数据

              语法

$.post(URL,data,callback);

        必需的 URL 参数规定您希望请求的 URL。

        可选的 data 参数规定连同请求发送的数据。

        可选的 callback 参数是请求成功后所执行的函数名。

        下面的例子使用 $.post() 连同请求一起发送数据:

 实例

$("button").click(function(){
  $.post("demo_test_post.asp",
  {
    name:"Donald Duck",
    city:"Duckburg"
  },
  function(data,status){
    alert("Data: " + data + "\nStatus: " + status);
  });
});

        $.post() 的第一个参数是我们希望请求的 URL ("demo_test_post.asp")。

        然后我们连同请求(name 和 city)一起发送数据。

        "demo_test_post.asp" 中的 ASP 脚本读取这些参数,对它们进行处理,然后返回结果。

        第三个参数是回调函数。第一个回调参数存有被请求页面的内容,而第二个参数存有请求的状态。

        2.3 jQuery $.get() 方法

                $.get() 方法通过 HTTP GET 请求从服务器上请求数据。

                语法 

        $.get(URL,callback);      

        必需的 URL 参数规定您希望请求的 URL。

        可选的 callback 参数是请求成功后所执行的函数名。

        下面的例子使用 $.get() 方法从服务器上的一个文件中取回数据:

        实例

$("button").click(function(){
  $.get("demo_test.asp",function(data,status){
    alert("Data: " + data + "\nStatus: " + status);
  });
});

3. 案例(自动补全)

前端代码

<%@ 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>Insert title here</title>
<!-- 引入jquery库 -->
<script type="text/javascript" src="${pageContext.request.contextPath}static/js/jquery-3.3.1.js"></script>
<script type="text/javascript">
	function mgfc(obj){
		//将选中的内容赋给文本框
		$("#ta").val(obj.innerText);
		//隐藏div
		$("#da").hide();
	}


	$(function(){
		//1.给文本框添加键盘事件
		$("#ta").keyup(function(){
			//获取文本框的内容  let局部变量  var全局变量
			let ta = $("#ta").val();
			//发送ajax请求
			$.post('${pageContext.request.contextPath}/UserServlet.do',{ta:ta},function(data){
				//将后台响应的数据转换成js集合
				let us = $.parseJSON(data);
				if(us.length == 0){//后台没有数据
					$("#da").hide(); //没有数据则隐藏div
				}else{
					$("#da").show(); //有数据就先显示div
					var sb = "<ul>"
					//遍历集合us
					$.each(us,function(i,u){// u表示每个用户对象
						sb += "<li onclick=\"mgfc(this)\" onmouseover=\"this.className='la'\" onmouseout=\"this.className='lb'\">名字:"+u.name+"</li>"
					})
					sb += "</ul>";
					//最后把sb赋给div
					$("#da").html(sb);
				}
			});
		})
	})
</script>
<style type="text/css">
	li{
		width: 100px;
		list-style: none;
	}
	/* 当用户选择数据的时候该数据的背景颜色 */
	.la{
		background-color: pink
	}
	/* 数据背景颜色恢复初始 */
	.lb{}
</style>
</head>
<body>
	<input type="text" id="ta"/>
	<button>查询</button>
	<div id="da"></div>
	<br>
</body>
</html>

servlet

public class UserServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
		
		PrintWriter out = resp.getWriter();
		
		
		//获取模糊查询关键字
		String name = req.getParameter("ta");
		//调用模糊查询方法
		UserDao ud = new UserDao();
		List<User> listUser = ud.query(name);
		
		//把集合 listUser 转换成前台和后台都识别的数据格式:JSON(键值对形式存储数据)
		String data = JSON.toJSONString(listUser);
		
		//把json字符串data返回给前端
		out.write(data);
		out.flush();
		out.close();
	}
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值