当前位置: 首页 > 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…...

双模型对比:OpenClaw同时接入nanobot与云端API的性能测试

双模型对比&#xff1a;OpenClaw同时接入nanobot与云端API的性能测试 1. 测试背景与目标 最近在尝试用OpenClaw搭建一个能同时处理本地轻量任务和复杂云端任务的智能助手系统。核心需求是&#xff1a;日常简单查询走本地部署的轻量模型&#xff08;nanobot&#xff09;&#…...

二次开发入门:修改nanobot镜像适配我的OpenClaw需求

二次开发入门&#xff1a;修改nanobot镜像适配我的OpenClaw需求 1. 为什么需要定制nanobot镜像 第一次接触OpenClaw时&#xff0c;我直接使用了官方提供的标准镜像。但在实际使用中&#xff0c;发现几个痛点&#xff1a;默认的chainlit界面过于简单&#xff0c;无法展示我需要…...

LSTM电池SOC估计最基本方法及全包代码:包含两个数据集、预处理代码、模型代码与估计结果

LSTM做电池SOC估计&#xff0c;最基本的方法&#xff0c;入门必学&#xff0c;包括两个数据集&#xff0c;及其介绍、预处理代码、模型代码、估计结果等&#xff0c;这是我见过最全的一个SOC估计代码包&#xff0c;总共文件大概有70个左右最近在折腾电池SOC估计&#xff0c;发现…...

OpenClaw+GLM-4.7-Flash:智能读书笔记生成

OpenClawGLM-4.7-Flash&#xff1a;智能读书笔记生成 1. 为什么需要自动化读书笔记 作为一名技术从业者&#xff0c;我常年保持每周至少阅读两本专业书籍的习惯。但最困扰我的不是阅读本身&#xff0c;而是如何高效整理书中精华内容。过去我尝试过各种笔记工具&#xff0c;从…...

当我谈 Rax 按端拆分代码的时候我谈些什么:代码规范相关

前言在跨端开发领域&#xff0c;Rax 作为一个备受关注的框架&#xff0c;凭借其“一次编写&#xff0c;多端运行”的理念&#xff0c;为开发者带来了巨大的效率提升。然而&#xff0c;随着业务规模的扩大和终端形态的多样化&#xff08;Web、Weex、小程序、Node 等&#xff09;…...

ZeroOmega多代理管理功能全解析:实现智能网络访问控制的核心方案

ZeroOmega多代理管理功能全解析&#xff1a;实现智能网络访问控制的核心方案 【免费下载链接】ZeroOmega Manage and switch between multiple proxies quickly & easily. 项目地址: https://gitcode.com/gh_mirrors/ze/ZeroOmega ZeroOmega作为一款开源的多代理管理…...

边缘计算与 AI 结合:奥尔特云低功耗边缘算力设备

这款高性能边缘智能算力设备&#xff0c;搭载16T算力AI处理器&#xff0c;以高性能、低功耗、易扩展为核心优势&#xff0c;为用户提供一站式智能化解决方案。设备内置人脸、视频结构化等基础算法&#xff0c;可扩展工业、矿山、能源、园区、城管、无人机巡检等行业专用算法包&…...

免费内容解锁工具:提升信息获取效率的技术解决方案

免费内容解锁工具&#xff1a;提升信息获取效率的技术解决方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代&#xff0c;专业内容与普通用户之间往往隔着一道…...

戴尔Precision Pro商务笔记本回归,新一代产品聚焦便携性

看起来2026年是戴尔按下重启键的一年——在消费者和商用产品线中&#xff0c;戏剧性的品牌重塑都在被回归。有时候&#xff0c;老品牌确实是好品牌&#xff1a;熟悉的XPS名称和设计今年回归是有原因的&#xff0c;绝对不是因为戴尔Premium有正面的品牌认知度。在戴尔商务产品方…...

道心网络安全学习笔记系列之好靶场的信息收集2

上节课找了一个图片的网址&#xff0c;继续挑战其它靶场&#xff0c;我们看下一题收集十个百度域名&#xff0c;这还不是顺手就来&#xff0c;但是贴吧不行&#xff0c;那还不简单&#xff0c;去访问百度网站&#xff0c;顺便输入一个搜索词&#xff0c;都不用看&#xff0c;前…...