前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ajax & Axios & Json

Ajax & Axios & Json

作者头像
小简
发布于 2023-01-04 07:00:56
发布于 2023-01-04 07:00:56
3.5K00
代码可运行
举报
文章被收录于专栏:简言之简言之
运行总次数:0
代码可运行

Ajax

简介

AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。

AJAX 有两个作用:

  • 1、与服务器进行数据交换。可以使用 Ajax 和服务器进行通信
  • 2、异步交互。可以在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

同步和异步

同步发送请求过程

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

异步发送请求过程

浏览器页面发送请求给服务器,在服务器处理请求的过程中,浏览器页面还可以做其他的操作。

快速入门

服务端实现
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@WebServlet("/ajaxServlet")
public class AjaxServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //响应数据
        response.getWriter().write("hello Ajax~");
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}
客户端实现

在 webapp 下创建名为 ajax.html 的页面,在该页面书写 Ajax 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    //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);//弹出服务端响应的数据
        }
    };
</script>
</body>
</html>

运行后,在浏览器地址栏输入 http://localhost:8080/ajax-demo/ajax.html ,在 ajax.html 加载的时候就会发送 Ajax 请求,获取服务端响应的数据,“hello Ajax~”

Axios

Axios 是一个基于 promise 的网络请求库。本质上是对原生的 Ajax 进行封装,简化代码

基础语法

1、引入 axios 的 js 文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="js/axios.js"></script>

2、使用 axios 发送请求,并获取响应结果

  • 发送 get 请求
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
axios({
  method:"get",
  url:"请求的URL地址?请求体"
  }).then(function (resp){//用来指定请求成功之后的回调函数
  alert(resp.data);//resp 是请求成功之后的结果
})
  • 发送 post 请求
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
axios({
  method:"post",
  url:"请求的URL地址",
  data:"请求体"
  }).then(function (resp){
  alert(resp.data);
});

axios() 是用来发送异步请求的,小括号中使用 js 对象传递请求相关的参数:

参数

描述

method

请求类型

url

请求的URL地址

data

post请求体

then(函数)

请求成功之后的回调函数

快速入门

后端实现

定义一个用于接收请求的servlet

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@WebServlet("/axiosServlet")
public class AxiosServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("get...");
        //1. 接收请求参数
        String username = request.getParameter("username");
        System.out.println(username);
        //2. 响应数据
        response.getWriter().write("hello Axios~");
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("post...");
        this.doGet(request, response);
    }
}
前端实现

新建 axios.html 并引入 axios.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script src="js/axios.js"></script>
<script>
  //1. get
  axios({
  method:"get",
  url:"http://localhost:8080/axois-demo/axiosServlet?username=Tom"
  }).then(function (resp) {
  alert(resp.data);
  })
  
  //2. post
  /*axios({
    method:"post",
    url:"http://localhost:8080/axois-demo/axiosServlet",
    data:"username=Tom"
  }).then(function (resp) {
    alert(resp.data);
  })*/
</script>
</body>
</html>

运行后,在浏览器地址栏输入 http://localhost:8080/axois-demo/axios.html ,在 axios.html 加载的时候就会发送 Axios 请求,获取服务端响应的数据,弹出“hello Axios~”

请求方法别名

为了方便更加简化代码, Axios 为所有支持的请求方法提供了别名。

  • get 请求 : axios.get(url[,config])
  • post 请求: axios.post(url[,data[,config])
  • delete 请求 : axios.delete(url[,config])
  • head 请求 : axios.head(url[,config])
  • options 请求 : axios.option(url[,config])
  • put 请求: axios.put(url[,data[,config])
  • patch 请求: axios.patch(url[,data[,config])

get请求可改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
axios.get("/axios-demo/axiosServlet?username=Tom").then(function(resp) {
    alert(resp.data);
});

post请求可改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 axios.post("/axios-demo/axiosServlet","username=Tom").then(function(resp) {
    alert(resp.data);
  })

Vue3使用Axios

step1. 使用npm安装axios

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install axios --save

step2. 我们将要使用的axios实例单独编写成一个js文件,文件夹可以建立在**src/utils/**(自己选择建立在什么地方)。命名为: axios.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import axios from 'axios'

//使用axios下面的create([config])方法创建axios实例,其中config参数为axios最基本的配置信息。
const API = axios.create({
    baseUrl:'http://localhost:8080' ,//请求后端数据的基本地址,自定义
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    timeout: 2000                   //请求超时设置,单位ms
})

//导出我们建立的axios实例模块,ES6 export用法
export default API

step3. 然后在main.js中导入我们编写axios.js文件,全局配置一下axios的引用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//main.js
import { createApp } from 'vue'
import App from './App.vue'
import axios from '@/utils/axios.js'

const app = createApp(APP);   //建立一个vue3app
app.mount('#app');            //将这个vue3app全局挂载到#app元素上
app.config.globalProperties.$axios=axios;  //配置axios的全局引用

Json

简介

JSON(JavaScript Object Notation ):JavaScript 对象表示法

作用:由于其语法格式简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输。

JavaScript 对象格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  name:"zhangsan",
  age:23,
  city:"北京"
}

XML 格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<student>
  <name>张三</name>
  <age>23</age>
  <city>北京</city>
</student>

JSON 格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name":"zhangsan",
  "age":23,
  "city":"北京"
}

对比后就会发现 JSON 格式更简单,JSON 格式和 JS 对象格式特别像。JSON 格式中的键要求必须使用双引号括起来。

基础语法

JSON 本质就是一个字符串,但是该字符串内容是有一定的格式要求的。 定义格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var 变量名 = '{"key":value,"1 key":value,...}';

JSON 的键要求必须使用双引号括起来,而值根据要表示的类型确定。

value 的数据类型分为如下

  • 数字(整数或浮点数)
  • 字符串(使用双引号括起来)
  • 逻辑值(true或者false)
  • 数组(在方括号中)
  • 对象(在花括号中)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var jsonStr = '{"name":"Tom","age":23,"addr":["北京","上海","西安"],"user":{"id":1,"username":"Tom"},"flag":true}'

Json和JS对象相互转换

如果是一个 JS 对象,我们就可以通过 JS对象.属性名 的方式来获取数据。

JS 提供了一个对象 JSON ,该对象有如下两个方法

方法

作用

使用方法

parse(str)

将 JSON 转换为 JS 对象

var jsObject = JSON.parse(jsonStr);

stringify(obj)

将 JS 对象转换为 JSON

var jsonStr = JSON.stringify(jsObject)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
  //1. 定义JSON字符串
  var jsonStr = '{"name":"Tom","age":23,"addr":["北京","上海","西安"]}'
  alert(jsonStr);
  //2. 将 JSON 字符串转为 JS 对象
  let jsObject = JSON.parse(jsonStr);
  alert(jsObject)
  alert(jsObject.name)
  //3. 将 JS 对象转换为 JSON 字符串
  let jsonStr2 = JSON.stringify(jsObject);
    alert(jsonStr2)
</script>

Axios发送Json数据

提前定义一个 js 对象,用来封装需要提交的参数,然后使用 JSON.stringify(js对象) 转换为 JSON ,再将该 JSON 作为 axios 的 data 属性值进行请求参数的提交。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var jsObject = {name:"张三"};
axios({
  method:"post",
  url:"http://localhost:8080/ajax-demo/axiosServlet",
  data: JSON.stringify(jsObject)
  }).then(function (resp) {
  alert(resp.data);
})

而 axios 是一个很强大的工具。只需要将需要提交的参数封装成 JS 对象,并将该 JS 对象作为 axios 的 data 属性值,它会自动将 JS 对象转换为 JSON 进行提交。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var jsObject = {name:"张三"};
axios({
    method:"post",
    url:"http://localhost:8080/ajax-demo/axiosServlet",
    data:jsObject //这里 axios 会将该js对象转换为 json 
    }).then(function (resp) {
    alert(resp.data);
})

Json和Java对象相互转换

Fastjson介绍

Fastjson 是阿里巴巴提供的一个 Java 语言编写的高性能功能完善的 JSON 库,是目前 Java 语言中最快的 JSON 库,可以实现 Java 对象和 JSON 字符串的相互转换。

Fastjson使用

1、导入依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.62</version>
</dependency>

2、Java对象转JSON

将 Java 对象转换为 JSON ,只需要使用 Fastjson 提供的 JSON 类中的 toJSONString() 静态方法即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String jsonStr = JSON.toJSONString(obj);

3、JSON字符串转Java对象

将 JSON 转换为 Java 对象,只需要使用 Fastjson 提供的 JSON 类中的 parseObject() 静态方法即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
User user = JSON.parseObject(jsonStr, User.class);

4、测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class User {
    private int id;
    private String username;
    private String Password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setPassword(String password) {
        Password = password;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return Password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", Password='" + Password + '\'' +
                '}';
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class FastJsonDemo {
    public static void main(String[] args) {
        
        User user = new User();
        user.setId(1);
        user.setUsername("Tom");
        user.setPassword("123");
        System.out.println("初始user对象:"+user);
      
        //1. 将Java对象转为JSON字符串
        String jsonString = JSON.toJSONString(user);
        System.out.println("转换成json:"+jsonString);

        //2. 将JSON字符串转为Java对象
        User u = JSON.parseObject(jsonString, User.class);
        System.out.println("再转换成user对象:"+u);
    }
}

/**
初始user对象:User{id=1, username='Tom', Password='123'}
转换成json:{"id":1,"password":"123","username":"Tom"}
再转换成user对象:User{id=1, username='Tom', Password='123'}
**/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
康耐视VIDI介绍-蓝色定位工具(Locate)
蓝色定位工具用于识别和定位图像中的特定特征或特征组。该工具的输出可用于为其他下游 ViDi 工具提供位置数据。使用该工具时您提供一个训练集,然后识别图像中的特征。您还可以使用该工具创建两种不同类型的模型。布局模型提供了检查特征是否存在以及验证区域中一个或多个特征的正确实例数的功能。可以生成节点模型,其定义一组特征之间的空间关系。
AI机器视觉
2022/06/01
3.9K0
康耐视VIDI介绍-蓝色定位工具(Locate)
康耐视深度学习VIDI介绍(1)
前几天康耐视举行了一次线上分享会,主要是对2022年他们新产品的一些介绍和老产品的更新说明。我抽时间听了一下给我的感觉是康耐视现在基本上是在all in AI,他们传统的视觉算法和平台基本上没有太大的变化,但是在AI产品这一块丰富了很多。
AI机器视觉
2022/06/01
3.3K0
康耐视深度学习VIDI介绍(1)
康耐视VIDI介绍-蓝色读取工具(Read)
蓝色读取工具用于执行光学字符识别 (OCR)。与蓝色定位工具类似,蓝色读取工具可将字符作为图像中的特征进行识别和定位。但是蓝色读取工具使用预先训练的模型为读取性能提供通用基线,无需训练。因此当工具首次配置后,它几乎可以立即识别和读取字符。工具已经知道如何读取字符,您只需要定义要在图像中的哪个位置查找字符即可。
AI机器视觉
2022/06/01
3.7K0
康耐视VIDI介绍-蓝色读取工具(Read)
18个您想了解的微小但有用的macOS功能
macOS具有许多如此小巧而有用的功能,在您偶然发现它们或有人将它们指出给您之前,很容易错过它们。
office小助手
2020/12/25
6.7K0
18个您想了解的微小但有用的macOS功能
「Adobe国际认证」Adobe Photoshop,如何裁剪并拉直照片?
裁剪是移去部分照片以打造焦点或加强构图效果的过程。在 Photoshop 中使用裁剪工具裁剪并拉直照片。裁剪工具是非破坏性的,您可以选择保留裁剪的像素以便稍后优化裁剪边界。裁剪工具还提供直观的方法,可让您在裁剪时拉直照片。
IT胶囊
2021/06/17
3.1K0
用于三维点云语义分割的标注工具和城市数据集
文章:Annotation Tool and Urban Dataset for 3D Point Cloud Semantic Segmentation
点云PCL博主
2022/04/06
2.2K0
用于三维点云语义分割的标注工具和城市数据集
独家 | 手把手教数据可视化工具Tableau
前言 数据的世界正在发生急剧变化,任何人都应该访问自己需要的数据,并具备获取任何数据的洞察力,而tableau正是帮我们洞察数据的好帮手。 Tableau作为BI tool leader ( 2016 Gartner BI chart), 它不仅是一款可视化软件,还具备不可忽略的强大的Data connection, collaboration, security management, multi-platform功能性: Data connection:Tableau Desktop可直接连接S
数据派THU
2018/01/30
19.6K0
独家 | 手把手教数据可视化工具Tableau
如何在Mac上轻松更改Finder的外观
macOS Finder是一个方便的实用程序,但是如果您自定义外观,它可能会为您提供更好的服务。这里有一些改变Finder外观的技巧!
office小助手
2020/12/24
6.6K0
如何在Mac上轻松更改Finder的外观
Parallels Toolbox for mac(pd工具箱)
专为富有创造力的个人、学生、小企业主、长期多任务处理者、IT 经理以及介于两者之间的任何人而设计。Parallels Toolbox 讓每個人都可以充分利用他們的 Mac,而不必學習複雜的系統設定。
Mac小小心
2023/04/10
6.1K0
Parallels Toolbox for mac(pd工具箱)
阿丘科技之AIDI高级应用讲解一(5)
导入混合图后,图像显示区会显示混合图每张子图,通过方向键左右切换,或者通过标注工具栏中图片id切换
AI机器视觉
2022/06/01
3.7K0
阿丘科技之AIDI高级应用讲解一(5)
FL Studio水果21最新中文版详细功能介绍
水果具有独特的底层逻辑,其开创了编曲“块”的思维。用FL Studio编曲的流程是在把一个样式编辑好,然后将编辑好的样式当做音频块,在播放列表中像“搭积木”一样任意编排,形成一首歌,这种模式非常利于电子音乐编曲。
用户7442547
2023/03/06
4.8K0
『开发技术』LabelImg安装及使用介绍
注释以PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持YOLO格式
小宋是呢
2022/03/07
2.2K0
『开发技术』LabelImg安装及使用介绍
PyCharm入门教程——用户界面导览「建议收藏」
JetBrains PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外,该IDE提供了一些高级功能,以用于Django框架下的专业Web开发。
全栈程序员站长
2022/09/27
4.2K0
PyCharm入门教程——用户界面导览「建议收藏」
做机器视觉哪个软件好?
在构建机器视觉系统时,开发人员可以选择众多知名公司的商用软件包。然而,在选择这类软件时,重要的是理解这些软件提供的功能、支持的硬件以及如何轻松地配置这样的软件,以解决特定的机器视觉任务。
小白学视觉
2022/09/28
8.3K0
MATLAB GUI界面编程——一些细节问题「建议收藏」
本篇博文主要对自己在进行MATLAB GUI设计时遇到的一些细节问题进行总结,点击下面目录中的相关问题,可以直接跳转至相应位置。另外,需要声明的是,我所使用的MATLAB版本——MATLAB R2017a。
全栈程序员站长
2022/07/01
6.8K0
MATLAB GUI界面编程——一些细节问题「建议收藏」
工具 | ImagePy——UI界面支持开放插件的Python开源图像处理框架
AI 科技评论按,ImagePy 是一款 python 开源图像处理框架,其 UI 界面支持开放插件。在 github:https://github.com/Image-Py/imagepy 上,不仅有关于这款图像处理软件的详细介绍,还有一些使用示例,雷锋网 AI 科技评论接下来将详细介绍这一开源图像处理框架。
AI科技评论
2019/01/03
1.8K0
深度学习在医学影像上的应用(四)——检测
上一篇给大家介绍了深度学习在医学影像上分割的应用,这一篇我将分享深度学习在医学影像上检测应用。
医学处理分析专家
2020/06/29
3.1K0
深度学习在医学影像上的应用(四)——检测
2014版CAD操作教程(全)
l 认识AutoCAD的应用领域,让学生了解软件的专业特点及在校的优势,认识本专业在国内的发展历程及毕业后的前景。
用户7505898
2020/09/09
6.7K0
2014版CAD操作教程(全)
SAP应用界面开发-工具栏对象GUI Status与GUI Title
GUI Status与GUI Title用于自定义工具栏按钮及Report程序标题栏显示内容,可以通过SE81或直接在SE38中展开对象列表进行相关操作。如下图所示为ABAP编辑器中展开,点击:
matinal
2020/11/27
5.7K0
SAP应用界面开发-工具栏对象GUI Status与GUI Title
【MFC拓展库】上海道宁与BCGSOFT合作为您带来专业的Micrisoft Windows开发业务组件
BCGSoft Ltd.成立于1998年,是一家专门为Microsoft Windows开发业务组件的软件公司。BCGSoft旨在帮助开发人员将当今市场上先进的技术整合到他们的应用程序中。
51Component
2022/10/18
6.2K0
【MFC拓展库】上海道宁与BCGSOFT合作为您带来专业的Micrisoft Windows开发业务组件
推荐阅读
相关推荐
康耐视VIDI介绍-蓝色定位工具(Locate)
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • Ajax
    • 简介
    • 同步和异步
    • 快速入门
      • 服务端实现
      • 客户端实现
  • Axios
    • 基础语法
    • 快速入门
      • 后端实现
      • 前端实现
    • 请求方法别名
    • Vue3使用Axios
  • Json
    • 简介
    • 基础语法
    • Json和JS对象相互转换
    • Axios发送Json数据
    • Json和Java对象相互转换
      • Fastjson介绍
      • Fastjson使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档