Ajax
Ajax
AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。
Ajax作用
AJAX 作用有以下两方面:
* 与服务器进行数据交换:通过AJAX可以给服务器发送请求,服务器将数据直接响应回给浏览器。
* 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等。
同步和异步
- 同步发送请求过程如下

浏览器页面在发送请求给服务器,在服务器处理请求的过程中,浏览器页面不能做其他的操作。只能等到服务器响应结束后才能,浏览器页面才能继续做其他的操作。
- 异步发送请求过程如下

浏览器页面发送请求给服务器,在服务器处理请求的过程中,浏览器页面还可以做其他的操作。
Ajax快速入门
// 1.创建核心对象
var xhttp;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
// 2.发送请求
xhttp.open("GET", "http://localhost:8080/ajax-demo/ajaxServlet");
xhttp.send();
// 3.获取响应
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert(this.responseText);
}
};
Axios
Axios 对原生的AJAX进行封装,简化书写。
Axios官网是:https://www.axios-http.cn
基本使用
- 引入 axios 的 js 文件
<script src="js/axios-0.18.0.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
- 发送 ajax 请求
get 请求
axios({
method:"get",
url:"http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan"
}).then(function (resp) {
alert(resp.data);
})
post 请求
axios({
method:"post",
url:"http://localhost:8080/ajax-demo/axiosServlet",
data:"username=zhangsan"
}).then(function (resp) {
alert(resp.data);
})
请求方法别名
为了方便起见, Axios 已经为所有支持的请求方法提供了别名。如下:
* `get` 请求 : `axios.get(url[,config])`
* `delete` 请求 : `axios.delete(url[,config])`
* `head` 请求 : `axios.head(url[,config])`
* `options` 请求 : `axios.option(url[,config])`
* `post` 请求: `axios.post(url[,data[,config])`
* `put` 请求: `axios.put(url[,data[,config])`
* `patch` 请求: `axios.patch(url[,data[,config])`
入门案例中的 get 请求代码可以改为如下:
axios.get("http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan").then(function (resp) {
alert(resp.data);
});
入门案例中的 post 请求代码可以改为如下:
axios.post("http://localhost:8080/ajax-demo/axiosServlet","username=zhangsan").then(function (resp) {
alert(resp.data);
})
JSON
概述
JavaScript Object Notation JavaScript 对象表示法。
{
"name":"张三",
"age":23,
"city":"北京"
}
定义格式
JSON 本质就是一个字符串,但是该字符串内容是有一定的格式要求的。 定义格式如下:
var 变量名 = '{"key":value,"key":value,...}';
`JSON` 串的键要求必须使用双引号括起来,而值根据要表示的类型确定。value 的数据类型分为如下
* 数字(整数或浮点数)
* 字符串(使用双引号括起来)
* 逻辑值(true或者false)
* 数组(在方括号中)
* 对象(在花括号中)
* null
获取数据
js 对象通过 `js对象.属性名` 的方式来获取数据
JS 提供了一个对象 `JSON` ,该对象有如下两个方法:
* `parse(str)` :将 JSON串转换为 js 对象。使用方式是:`var jsObject JSON.parse(jsonStr);`
* `stringify(obj)` :将 js 对象转换为 JSON 串。使用方式是:`var jsonStr = JSON.stringify(jsObject)`
发送异步请求携带参数
axios 是一个很强大的工具。我们只需要将需要提交的参数封装成 js 对象,并将该 js 对象作为 axios 的 data 属性值,它会自动将 js 对象转换为 JSON 串进行提交。如下:
var jsObject = {name:"张三"};
axios({
method:"post",
url:"http://localhost:8080/ajax-demo/axiosServlet",
data:jsObject //这里 axios 会将该js对象转换为 json 串的
}).then(function (resp) {
alert(resp.data);
})
注意:
* js 提供的 `JSON` 对象我们只需要了解一下即可。因为 `axios` 会自动对 js 对象和 `JSON` 串进行想换转换。
* 发送异步请求时,如果请求参数是 `JSON` 格式,那请求方式必须是 `POST`。因为 `JSON` 串需要放在请求体中。
JSON串和Java对象的相互转换
Fastjson 是阿里巴巴提供的一个Java语言编写的高性能功能完善的 JSON 库,是目前Java语言中最快的 JSON 库,可以实现 Java 对象和 JSON 字符串的相互转换。
Fastjson 使用也是比较简单的,分为以下三步完成
- 导入坐标
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
- Java对象转JSON
String jsonStr = JSON.toJSONString(obj);
- JSON字符串转Java对象
User user = JSON.parseObject(jsonStr, User.class);

异步的 JavaScript 和 XML。
浙公网安备 33010602011771号