一、概述
Ajax全称是Asynchronous Javascript and XML,即异步的JavaScript和 XML。Ajax是一种Web应用技能,该技能是在JavaScript、DOM、服务器配合下,实现浏览器向服务器发送异步哀求。
Ajax技能用于页面的局部更新,同步调用会对客户使用造成影响,好比当你想获取一张图片时,页面需要通过一系列哀求,之后浏览器把整个页面重新发送,花费时间长。异步调用便办理了这个我题目。Ajax异步哀求方式不向服务器发出哀求,会得到数据后再更新页面(通过DOM操纵修改页面内容),整个过程不会发生页面跳转或刷新操纵。
二、jQuery框架
要实现Ajax异步刷新就需要使用到JavaScript和DOM技能,但使用JavaScript实现Ajax异步刷新比力复杂,而且需要考虑到跨域等题目,因此,人们在Web项目开辟过程中提供了很多框架,对Ajax做了一系列封装简化,使操纵更方便快捷。此中,最常用的框架为jQuery。
2.1 jQuery底子知识
官网下载后,添加再web目次下,之后在需要的HTMl和JSp中引入即可。
引入方式:
<script src="jquery-3.7.1.js"></script>
jQuery的常用操纵包罗选择器的使用、元素对象的操纵、事件的绑定、链式编程.
jQuery中的load()方法
load(url,data,callback)
- url:必选,指定加载资源的路径
- data:可选,发送至服务器的数据
- callback:可选,哀求完成时执行的函数
使用第一个参数
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Title</title>
- <script src="/jquery-3.7.1.js"></script>
- </head>
- <body>
- <button id="btn">加载数据</button>
- <div id="box"></div>
- <script type="text/javascript">
- $('#btn').click(function (){
- $('#box').load('http://localhost:8080/jQuery/data.jsp')
- });
- </script>
- </body>
- </html>
复制代码 data.jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Title</title>
- </head>
- <body>
- <h3>静夜思</h3>
- <h6>唐 李白</h6>
- <pre>
- 床前明月光,
- 疑似地上霜。
- 举头望明月,
- 低头思故乡。
- </pre>
- </body>
- </html>
复制代码 运行结果
第二个参数
demo02.jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <!DOCTYPE html>
- <html>
- <head>
- <title>Title</title>
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
- <script>
- $(document).ready(function() {
- $('#btn').click(function () {
- $('#box').load('http://localhost:8080/loadServlet', {username: 'zhangsan', password: '123'});
- });
- });
- </script>
- </head>
- <body>
- <button id="btn">加载数据</button>
- <div id="box"></div>
- </body>
- </html>
复制代码 对应转发的servlet类
- @WebServlet("/loadServlet")
- public class LoadServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- String username = req.getParameter("username");
- String password = req.getParameter("password");
- resp.setContentType("text/html;charset=UTF-8");
- resp.getWriter().println("注册成功!<br> 用户名: " + username + ", 密码:" + password);
- }
- @Override
- protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- super.doPut(req, resp);
- }
- }
复制代码 第三个参数
回调函数,该函数在哀求数据加载完成后执行。回调函数用于获取本次哀求的相关信息,它有3个默认参数,分别表示相应数据、哀求状态和XMLHttpRequest对象。 此中,哀求状态共有5种,分别为success(成功)、notmodified(未修改)、error(错误)、timeout(超时)和parsererror(剖析错误)。
在demo02.jsp中举行修改
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <!DOCTYPE html>
- <html>
- <head>
- <title>Title</title>
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
- <script>
- $(document).ready(function() {
- $('#btn').click(function () {
- $('#box').load('http://localhost:8080/loadServlet', {username: 'itcast', password: 123},
- function(responseData, status, xhr){
- console.log(responseData); // 输出请求的数据
- console.log(status); // 输出请求状态
- console.log(xhr); // 输出XMLHttpRequest对象
- })
- });
- });
- </script>
- </head>
- <body>
- <button id="btn">加载数据</button>
- <div id="box"></div>
- </body>
- </html>
复制代码 发送GET和POST哀求
浏览器向服务器发送的哀求包罗GET哀求和POST哀求,为此,jQuery提供了$.get()方法和$.post()方法,分别用于发送GET哀求和POST哀求。
$.get()方法哀求
和load()类似,但多了一个dataType,其预期的服务器相应的数据范例( xml、html、text、script、json、jsonp)
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Title</title>
- <script src="/jquery-3.7.1.js"></script>
- </head>
- <body>
- <button id="btn">加载数据</button>
- <div id="box"></div>
- <script>
- $('#btn').click(function() {
- $.get('http://localhost:8080/jQuery/data.jsp', function(data) {
- $('#box').html(data);
- }, 'html');
- });
- </script>
- </body>
- </html>
复制代码
调用$.get()方法发送数据
$.post()方法发送数据
在jQuery中,发送GET哀求调用$.get()方法,发送POST哀求调用$.post()方法,两个方法使用方式完全雷同,替换两者的方法名就可以在GET哀求和POST哀求方式之间切换。
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Title</title>
- <script src="/jquery-3.7.1.js"></script>
- </head>
- <body>
- <button id="btn">加载数据</button>
- <div id="box"></div>
- <script>
- $('#btn').click(function() {
- var userData = {username: 'itcast', password: 123};
- $.get('http://localhost:8080/loadServlet',userData,
- function(data) { $('#box').html(data); }, 'html');
- });
- </script>
- </body>
复制代码 运行结果
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |