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 对象作为 axiosdata 属性值,它会自动将 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);
posted @ 2022-12-03 13:08  晚点心动。  阅读(34)  评论(0)    收藏  举报