当前位置: 首页 > news >正文

Axios异步请求 json格式

Axios是Ajax的一个框架,简化Ajax操作。

需要axios.min.js 和vue.js的jar。

发送普通参数异步请求以及相应异常情况

客户端向服务器端异步发送普通参数值:
- 基本格式: axios().then().catch()
- 示例:
axios({ // axios表示要发送一个异步请求
method : "POST", //请求方式
url : "....", // 发送地址(发给谁)
params:{ //带的参数
uname:"lina",
pwd:"ok"
}
})
.then(function ( value ){ }) //成功响应时执行的回调 value.data可以获取到服务器响应容

.catch(function(reason){}); //有异常时执行的回调reason.response.data可以获取到响应的内容
reason.message / reason.stack 可以查看错误的信息

html代码

<div id="div0">uname:<input type="text" v-model="uname"/><br>pwd:<input type="text" v-model="pwd"/><br><br><input type="button" value="发送一个带普通请求参数值的异步请求" @click="axios01">
</div>

Axios和vue

<script language="JavaScript" src="script/vue.js"></script><script language="JavaScript" src="script/axios.min.js"></script><script language="JavaScript">window.onload=function (){var vue=new Vue({el:'#div0',data:{uname:'lina',pwd:'true'},methods:{//  标签里面定义了 @click="axios01"事件,所以缺个方法进行处理axios01:function (){axios({   // 表示将要给服务器端发送一个异步的请求method:"POST",url:"axios01.do",params:{// this已经进入方法function内部了,但是uname是vue里面的data的uname,所以要用vueuname:vue.uname,pwd:vue.pwd}}).then(function (value) {    //成功响应的时候 (回调)//    接收服务器端响应的数据console.log(value)}).catch(function (reason){   //出问题的时候执行console.log(reason)})}}});}</script>
效果:所有请求参数都被放到URL地址后面了,哪怕我们现在用的是POST请求方式。

后端服务器代码

@WebServlet("/axios01.do")
public class Axios01Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setCharacterEncoding("utf-8");// 获取参数String uname = request.getParameter("uname");String pwd = request.getParameter("pwd");System.out.println("uname="+uname);System.out.println("pwd="+pwd);response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");
//        把两个值返回(响应)到客户端        PrintWriter out= response.getWriter(); //得到一个打印流out.write("uname="+uname+"pwd="+pwd); //返回给客户端//        抛异常throw new NullPointerException("这里抛出空指针异常");}
}

axios程序接收到的响应对象结构

属性名

作用

config

调用axios(config对象)方法时传入的JSON对象

data

服务器端返回的响应体数据

headers

响应消息头

request

原生JavaScript执行Ajax操作时使用的XMLHttpRequest

status

响应状态码

statusText

响应状态码的说明文本

发送请求体为JSON格式

- 什么是JSON:JSON是一种数据格式

例如:JSON格式表示两个学员信息的代码如下:
[{sid:"s001",age:18},{sid:"s002",age:19}]

特点: - JSON表达数据更简洁,更能够节约网络带宽

客户端发送JSON格式的数据给服务器端:

1) 客户端中params需要修改成: data:
2) 服务器获取参数值不再是 request.getParameter()...
而是:
StringBuffer stringBuffer = new StringBuffer("");
BufferedReader bufferedReader = request.getReader();
String str = null ;
while((str=bufferedReader.readLine())!=null){
stringBuffer.append(str);
}
str = stringBuffer.toString() ;
3) 我们会发现 str的内容如下:
{"uname":"lina","pwd":"ok"}
- 服务器端给客户端响应JSON格式的字符串,然后客户端需要将字符串
转化成js Object 所需要的jar:gson 会把客户端发送来的json格式的
数据封装到对象中。
Gson gson =new Gson();
- GSON有两个API
--可以把某个json的字符串转换为所指定的类型
gson.fromJson( json字符串,需要转换的类型)
--将java object转换成json字符串,这样才能响应给客户端
gson.toJson(java Object)
-响应客户端为json的时候,要告诉客户端响应的内容是json格式数据
MIME-TYPE类型
第一个参数给谁发请求response.setContentType("application/json;charset=utf-8");
- 客户端中如果获取的是字符串:"{}"
--js语言中 也有字符串和js对象之间互转的API
string JSON.stringify(object) object ->string
object JSON.parse(string) string->object

html代码

<div id="div0">uname:<input type="text" v-model="uname"/><br>pwd:<input type="text" v-model="pwd"/><br><br><input type="button" value="发送一个带json格式的参数值的异步请求" @click="axios02">
</div>

axios和vue代码

<script language="JavaScript" src="script/vue.js"></script><script language="JavaScript" src="script/axios.min.js"></script><script language="JavaScript">window.onload=function (){var vue=new Vue({el:'#div0',data:{uname:'lina',pwd:'ok'},methods:{//  标签里面定义了 @click="axios01"事件,所以缺个方法进行处理axios02:function (){axios({   // 表示将要给服务器端发送一个异步的请求method:"POST",url:"axios02.do",data:{ //用json格式就要把params转换为datauname:vue.uname,pwd:vue.pwd}}).then(function (value) {    //成功响应的时候 (回调)//    接收服务器端响应的数据进行解析var data=value.data;// console.log(data)//data对应的数据://{uname:"lina",pwd:"123"}// 一点击输入框的值就改变vue.uname=data.uname;vue.pwd=data.pwd;//    此处value中的data返回的是js object,因此可以直接点出属性//    如果获取的是字符串:"{}"//    js语言中 也有字符串和js对象之间互转的API//    string JSON.stringify(object)   object ->string//     object JSON.parse(string)      string->object}).catch(function (reason){   //出问题的时候执行console.log(reason)})}}});}</script>

服务器端代码

@WebServlet("/axios02.do")
public class Axios01Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        1.获取客户端发送过来的参数
//    获取请求流    BufferedReader:带一个缓冲的字符流  Reader:字符流BufferedReader reader = request.getReader();
//        准备一个StringBufferStringBuffer stringBuffer=new StringBuffer();
//        从流里面读数据
//        准备临时字符串String str=null;
//        判断如果读到数据了,就可以往一个 StringBuffer追加while ((str=reader.readLine())!=null){stringBuffer.append(str);str=stringBuffer.toString();  //     得到客户端传过来的json格式的字符串
//            需要转换成JavaObject(封装到java对象中)  比如要注册功能,string转换为User,在调用UserDao保存数据库
//             Gson有两个API
//            1. fromJson(string,T) 将字符串转换成java object
//            2. toJson(java Object) 将java object转化成json字符串,这样才能响应给客户端Gson gson=new Gson();User user = gson.fromJson(str, User.class);System.out.print(user);
//         转换后 打印的是tostring类型  User{uname='lina', pwd='true'}//        2.    响应给客户端
//            假设user是从数据库查询出来的,现在需要将其转换成json格式的字符串,然后响应给客户端user.setUname("a");user.setPwd("123");String userJsonStr = gson.toJson(user);response.setCharacterEncoding("UTF-8");
//      响应给客户端之前,要告诉客户端响应的内容是json格式的数据 所以叫做 MIME-type
//            response.setContentType("text/html;charset=utf-8");  //之前的response.setContentType("application/json;charset=utf-8"); //现在的表示发送的是应用程序的jsonresponse.getWriter().write(userJsonStr);}}
}

相关文章:

Axios异步请求 json格式

Axios是Ajax的一个框架,简化Ajax操作。需要axios.min.js 和vue.js的jar。发送普通参数异步请求以及相应异常情况客户端向服务器端异步发送普通参数值&#xff1a;- 基本格式&#xff1a; axios().then().catch()- 示例&#xff1a;axios({ // axios表示要发送一个异步请求metho…...

Postgresql源码(100)Portal与事务的关系(顶层事务与子事务)

1 总结 portal与事务有强绑定的关系&#xff0c;由portal->createSubid变量记录关联关系。如果为1表示顶层事务&#xff0c;关联的是子事务。 不论是顶层事务还是子事务&#xff0c;提交、回滚时只会处理自己创建出来的portal。 顶层事务会清理非活跃状态的Portal&#xff…...

Java、JSP企业快信系统的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;计算机网络的出现到现在已经经历了翻天覆地的重大改变。因特网也从最早的供科学家交流心得的简单的文本浏览器发展成为了商务和信息的中心。到了今天&#xff0c;互联网已经成为了大量应用的首选平台&#xff0c;人们已经渐渐习惯了…...

1.2(完结)C语言进阶易忘点速记

1.大端存储&#xff1a;高权位数字放在低地址处&#xff0c;低权位数字放在高地指处。(以字节为单位) 2.小端存储&#xff1a;低权位数字放在低地址处&#xff0c;高权位数字放在高地址处。(以字节为单位) 3.变量(char类型)进行运算的时候一定要注意整形提升与截断&#xff0…...

雅思经验(十一)

写作&#xff1a;WRITINGTASK 2Governments should spend money on railways rather than roads.To what extent do you agree or disagree with this statement?Give reasons for your answer and include any relevant examples from your own knowledge or experience.思路…...

C++中的智能指针

1.RAII 与引用计数了解 Objective-C/Swift 的程序员应该知道引用计数的概念。引用计数这种计数是为了防止内存泄露而产生的。 基本想法是对于动态分配的对象&#xff0c;进行引用计数&#xff0c;每当增加一次对同一个对象的引用&#xff0c;那么引用对象的引用计数就会增加一次…...

LSTM已死,Transformer当立(LSTM is dead. Long Live Transformers! ):下

2017 年,Google 在论文 Attention is All you need 中提出了 Transformer 模型,其使用 Self-Attention 结构取代了在 NLP 任务中常用的 RNN 网络结构。而且实验也证明Transformer 在效果上已经完败传统的 RNN 网络。Transformer 的整体模型架构如下图所示。尽管它看起来还是很…...

OJ万题详解––[NOIP2004 提高组] 合并果子(C++详解)

目录 题目 分析 参考代码 题目 题目描述 一个果园里&#xff0c;多多已经将所有的果子打了下来&#xff0c;而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并&#xff0c;多多可以把两堆果子合并到一起&#xff0c;消耗的体力等于两堆果子的…...

MySQL-字符集和比较规则

在计算机中只能存储二进制数据&#xff0c;那该怎么存储字符串呢&#xff1f;当然是建立字符与二进制数据的映射关系 了&#xff0c;建立这个关系最起码要搞清楚两件事&#xff1a; 界定清楚字符范围&#xff1a;需要把哪些字符映射成二进制数据&#xff1f;编码与解码&#x…...

微搭低代码从入门到精通12-网格布局

开发小程序首要的就是考虑布局的问题&#xff0c;我们在以前的版本只能选择普通容器结合图片和文本组件来构建页面。 使用通用组件布局也可以&#xff0c;但有个问题是你要先学习CSS&#xff0c;要懂布局的概念&#xff0c;比如需要知道啥是flex布局&#xff0c;然后还得熟悉每…...

【c语言】二叉树

主页&#xff1a;114514的代码大冒险 qq:2188956112&#xff08;欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ &#xff09; Gitee&#xff1a;庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 引入 我们之前已经学过线性数据结构&#xff0c;今天我们将介绍非线性数据结构----树 树是一种非线性的…...

六、Java框架之SpringBoot

黑马课程 文章目录1. SpringBoot入门1.1 SpringBoot入门案例步骤1&#xff1a;创建SpringBoot项目高版本springboot常见错误步骤2&#xff1a;创建BookController步骤3&#xff1a;启动服务器并运行程序pom.xml示例1.2 官网创建SpringBoot1.3 SpringBoot工程快速启动问题导入打…...

「Python|环境安装|Windows」如何在Windows上安装Python环境?

本文主要介绍如何在Windows上安装Python&#xff0c;帮助初学者或者非程序员伙伴快速搭建可以运行python代码的环境。 文章目录安装python做一点小配置验证python如何安装指定版本的python编程语言的环境搭建一直是学习编程的第一道门槛。 对于如何在Linux系统上安装指定版本的…...

人工智能轨道交通行业周刊-第33期(2023.2.6-2.12)

本期关键词&#xff1a;高铁激光清洗、高铁确认列车、无线通信系统、推理服务优化、量子信息技术 1 整理涉及公众号名单 1.1 行业类 RT轨道交通中关村轨道交通产业服务平台人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟V…...

五分钟看懂Java字节码:极简手册

字节码新手很容易被厚厚的 JVM 书籍劝退&#xff0c;即使我看过相关书籍&#xff0c;工作真正用到时也全忘了&#xff0c;还得现学。 等我有了一定的字节码阅读经验&#xff0c;才发现字节码其实非常简单&#xff0c;只需要三步就能快速学会&#xff1a; 先了解 JVM 的基本结…...

C++ 类与对象(下)

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;C类与对象的收尾工作&#…...

Java基础——I/O

一、异常 异常是程序中可能出现的问题&#xff0c;它的父类是Exception。异常分为两类&#xff0c;编译时异常、运行时异常。 编译时异常&#xff1a;没有继承RuntimeException的异常&#xff0c;直接继承于Exception。编译阶段就会错误提示。运行时异常&#xff1a;RuntimeE…...

关于@hide的理解

在上一篇文章《学习HandlerThread》我们提到虽然HandlerThread类里有getThreadHandler()方法得到Handler&#xff0c;但是我们不可能调用到它。因为这个方法用hide注释了 /*** return a shared {link Handler} associated with this thread* hide*/NonNullpublic Handler getT…...

使用python加密主机文件几种方法实现

本文主要介绍了使用python加密主机文件几种方法实现&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧数据加密是一种保护数据安全的技术&#xff0c;通过对数据进行编…...

西湖论剑 2023 比赛复现

WEB real_ez_node 在 route/index.js 中&#xff1a; router.post(/copy,(req,res)>{res.setHeader(Content-type,text/html;charsetutf-8)var ip req.connection.remoteAddress;console.log(ip);var obj {msg: ,}if (!ip.includes(127.0.0.1)) {obj.msg"only for…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...