AJAX
JavaWeb之AJAX
什么是Ajax
- AsynchronousJavaScriptAndXML
- 它不是新的编程语言,是一种使用现有标准的新方法
- 它就是一个页面局部刷新的技术(在页面不进行刷新的情况下页面的部分地方与后台交互)
- 把先用成熟的技术组合在一起,形成一种新的操作方式
- HTML
- JavaScript
- css
- dom
- xml
- XMLHttpRequest
- ajax的实现是基于JavaScript的
Ajax的请求与传统请求的区别
- 异步请求与同步请求的区别
- 同步请求
- 客户端发送请求
- 服务端响应请求
- 调用者必须等待服务器返回结果,才能做其他事情
- 界面交互十分不友好
- 异步请求
- 调用者发送一个请求,不需要等待服务器返回响应
- 当服务端响应结果后,会通知调用者,返回结果
- 核心技术点:Ajax引擎对象
Ajax的实现方式
- 核心对象
- Ajax的引擎对象XMLHttpRequest
- 步骤
- 创建ajax引擎对象
- 使用open方法设置异步的请求链接处理(打开链接)
- xmlHttpRequestr.open("提交方式","提交参数",是否为异步);
- 设置回调函数 xmlHttpRequestr.onreadstatechange=callback
- onreadstatechange:存储函数,每当readState属性改变时,就会调用该函数
- on:事件、readstate:读取状态、change:更改
- readstate状态码
- 0:请求初始化
- 1:服务器连接已建立
- 2:请求已接收
- 3:请求处理中
- 4:请求已完成,且响应已就绪
- status状态
- 服务器状态码
- 200:OK
- 404:找不到页面
- ....等等
- 实现回调函数function callback(){}
- 发送请求 xmlHttpRequestr.send(null)
- GET请求
- 由于get请求的参数是在地址栏中,所以,在send发送时,是不需要传递数据的,所以send发送时,为null
- POST请求
- 由于post请求的参数是在请求体中的,所以在send发送时,需要将参数发送到请求体中,所以,send发送时,参数为请求参数
- 在使用send方法发送post请求参数时,需要设置请求头,没有请求头无法传递参数数据
- xmlHttpRequestr.setRequestHeader("Content type","application/x-www-form-urlencoded")
- 服务端响应的数据会被存储到 XMLHttpRequest下的responseTest属性中
- Ajax的JQuery实现
- JQuery是对JavaScript的封装库
- ajax是基于JavaScript
- 常用的操作
- $.ajax()
- 常用参数
- type -- 请求类型
- url -- 使用ajax提交请求的地址
- data -- 使用ajax提交请求的参数
- success -- ajax提交请求成功后执行的回调函数
- $.get()
- 常用参数
- url -- 使用ajax的get方式提交请求的地址
- data -- 使用ajax的get方法提交请求的参数
- callback -- 使用ajax的get方式提交请求后执行的回调函数
- type
- 使用ajax的get方法提交请求成功后,在执行回调函数时设置返回数据的格式
- 格式
- XML
- HTML
- script
- json
- text
- $.post()
- 常用参数:和get一样
- $.JSON()
- 常用参数
- 和get的常用方法类似
- 区别:没有type属性
- getJSON是以get方式提交,以JSON格式返回数据,所以不需要type属性来指定返回类型
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JavaScript实现ajax实例</title>
<script src="js/jquery-3.5.0.min.js"></script>
<script type="text/javascript">
$(function () {
$("#username").blur(function () {
var value=$(this).val();
// $.ajax({
// type:"post",
// url:"validata.do",
// data:"username="+value,
// success:function (data) {
// alert("data参数中是服务端响应的数据:"+data);
// }
// });
// $.get("validata.do",{"username":value},function (data) {
// alert("get发送的ajax返回的响应数据:"+data.info+","+data.password);
// },"json");
// $.post("validata.do",{"username":value},function (data) {
// alert("get发送的ajax返回的响应数据:"+data.info+","+data.password);
// },"json");
$.getJSON("validata.do",{"username":value},function (data) {
alert("get发送的ajax返回的响应数据:"+data.info+","+data.password);
});
});
});
</script>
</head>
<body>
<div align="left">
<form action="login.do" method="get">
帐户:<input type="text" name="username" id="username"/><span id="span_name"></span><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="提交"/>
</form>
</div>
</body>
</html>
- ajax接收服务端Java对象数据
- 拼接json
- 使用Json工具
- 使用Jackson可以实现Java后端与前端数据交互
- 操作步骤
- 导包
- 创建工具类对象
- 将指定Java对象传入前端
如有问题,请发送邮件至buxiaqingcheng@163.com或者buxiaqingcheng@dingtalk.com
浙公网安备 33010602011771号