3.jQuery.ajax
简介
- Ajax的核心是XMLHttpRequest对象(XHR)。XHR为向服务器发送请求和解析服务器响应提供了接口。能够以异步方式从服务器获取新数据。
- jQuery 提供多个与 AJAX 有关的方法。
- jQuery是一个库;js的大量函数(方法)
- 通过 jQuery AJAX 方法,能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON – 同时您能够把这些外部数据直接载入网页的被选元素中。
- jQuery Ajax本质就是 XMLHttpRequest,对它进行了封装,方便调用!
jQuery.ajax(...) 部分参数: url:请求地址 type:请求方式,GET、POST(1.9.0之后用method) headers:请求头 data:要发送的数据 contentType:即将发送信息至服务器的内容编码类型(默认: "application/x-www-form-urlencoded; charset=UTF-8") async:是否异步 timeout:设置请求超时时间(毫秒) beforeSend:发送请求前执行的函数(全局) complete:完成之后执行的回调函数(全局) success:成功之后执行的回调函数(全局) error:失败之后执行的回调函数(全局) accepts:通过请求头发送给服务器,告诉服务器当前客户端可接受的数据类型 dataType:将服务器端返回的数据转换成指定类型 "xml": 将服务器端返回的内容转换成xml格式 "text": 将服务器端返回的内容转换成普通文本格式 "html": 将服务器端返回的内容转换成普通文本格式,在插入DOM中时,如果包含JavaScript标签,则会尝试去执行。 "script": 尝试将返回值当作JavaScript去执行,然后再将服务器端返回的内容转换成普通文本格式 "json": 将服务器端返回的内容转换成相应的JavaScript对象 "jsonp": JSONP 格式使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数
使用它的两种方式
https://jquery.com/ 在官网上下载它
我们下载开发版(点进去右键保存就好)
下载好要用静态资源,就需要导入,创建包拉进去即可
- 使用cdn
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
如果我们想失去焦点就产生一个异步交互
js加载记得要配上静态资源过滤,在applicationContext.xml
中
3.1 编写AjaxController
@RequestMapping("/a1") public void ajax1(String name , HttpServletResponse response) throws IOException { if ("wmm".equals(name)){ response.getWriter().print("true"); }else{ response.getWriter().print("false"); } }
3.2 编写index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> <%--不能自闭和--%> <script src="${pageContext.request.contextPath}/statics/js/jquery-3.6.0.js"></script> <script> /*$.==jQuery.*/ function a1() { $.post({ url:"${pageContext.request.contextPath}/a1", data:{'name':$("#username").val()}, success:function (data,status) { alert(data); alert(status); console.log("data"+data); } }) } </script> </head> <body> <%--失去焦点的时候,发起一个请求到后台--%> 用户名:<input type="text" id="username" onblur="a1()"> </body> </html>
3.3 启动测试
我们在网页中鼠标离开输入框的时候就会看到发出了ajax请求。这是后台返回的结果,可以右键检查去查看一下。
流程:
3.5 用一个实体类来实现
3.5.1 实体类User
记得导入lombok的jar包
package com.hxl.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class User { private String name; private int age; private String sex; }
3.5.2 controller
@RequestMapping("/a2") public List<User> a2(){ ArrayList<User> list = new ArrayList<User>(); list.add(new User("王木木",1,"男")); list.add(new User("hxl",2,"男")); return list; }
3.5.3 test2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <script src="${pageContext.request.contextPath}/statics/js/jquery-3.6.0.js"></script> <script> $(function () { $("#btn").click(function () { $.post("${pageContext.request.contextPath}/a2",function (data) { console.log(data) let html=""; for (let i = 0; i < data.length; i++) { html += "<tr>" + "<td>" + data[i].name + "</td>" + "<td>" + data[i].age + "</td>" + "<td>" + data[i].sex+ "</td>" + "</tr>" } $("#content").html(html); }); }) }); </script> </head> <body> <input type="button" value="更新数据" id="btn"> <table> <tr> <td>姓名</td> <td>年龄</td> <td>性别</td> </tr> <tbody id="content"> </tbody> </table> </body> </html>
这里一定要注意$("#btn")
这个括号他们是一体的,让不然就会报不认识btn这个方法。
3.6 前端的一些知识
Html+css+js
js:
- 函数:闭包()()
- Dom
- id,name,tag
- create,remove
- Bom
- window
- document
ES6