1.Axios
是Ajax
的一个框架,简化Ajax
*** 作。
2.Axios
执行Ajax
*** 作的步骤:
(1)添加并引入axios
的js
文件
<script language="JavaScript" src="script/vue.js">script>
<script language="JavaScript" src="script/axios.min.js">script>
(2)客户端向服务器端发送带有参数值的异步请求
第一种:客户端向服务器端异步发送普通参数值
-
基本格式:
axios().then().catch()
-
示例:
axios({ method:"POST", url:"", params:{ uname:"lina", pwd:"ok" } }) .then(function (value) { })//成功响应时执行的回调 //value.data可以获取到服务器响应内容 .catch(function (reason) { });//有异常时执行的回调 //reason.response.data可以获取响应的内容 //reason.message / reason.stack 可以查看错误的信息
-
代码演示:
【demo01.html】
<head> <meta charset="UTF-8"> <title>演示Axios发送普通参数值给服务器端title> <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:{ axios01:function () { axios({ method:"POST", url:"axios01.do", params:{ uname:vue.uname, pwd:vue.pwd } }) .then(function (value) { console.log(value); }) .catch(function (reason) { console.log(reason); }); } } }); } script> head> <body> <div id="div0"> uname:<input type="text" v-model="uname"/><br/> pwd:<input type="text" v-model="pwd"/><br/> <input type="button" @click="axios01" value="发送一个带普通请求参数值的异步请求"> div> body>
【Axios01Servlet.java】
@WebServlet("/axios01.do") public class Axios01Servlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.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+"_"+pwd); } }
第二种:客户端向服务器发送JSON
格式的数据
-
JSON
:是一种数据格式-
XML
也是一种数据格式,XML
格式表示两个学生信息的代码如下:<students> <student sid = "s001"> <sname>Jimsname> <age>10age> student> <student sid = "s002"> <sname>Linasname> <age>14age> student> students>
-
JSON
格式表示两个学生信息的代码如下:[{sid:"s001",age:10},{sid:"s002",age:14}]
-
-
JSON
表达数据更简洁,更能够节约网络带宽 -
客户端发送
JSON
格式的数据给服务器端- 客户端中
params
需要修改成:data
- 服务器获取参数值不再是
request.getParameter()
…
- 客户端中
-
客户端收到的内容为:
{"uname":"lina","pwd":"ok"}
代码演示:
【demo02.html】
axios({ method:"POST", url:"axios02.do", data:{ uname:vue.uname, pwd:vue.pwd } }) .then(function (value) { console.log(value); }) .catch(function (reason) { console.log(reason); });
【Axios02Servlet.java】
@WebServlet("/axios02.do") public class Axios02Servlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer stringBuffer = new StringBuffer(""); BufferedReader bufferedReader = request.getReader(); String str = null; while ((str= bufferedReader.readLine()) != null) { stringBuffer.append(str); } str = stringBuffer.toString(); //已知String 需要转换成Java Object Gson gson = new Gson (); //Gson有两个API //1.fromJson(String,T) 将字符串转化成Java Object //2.toJson(Java Object) 将Java Object转化成json字符串,这样才能响应给客户端 User user = gson.fromJson(str,User.class); System.out.println(user); } }
(3)服务器端给客户端响应JSON
格式的字符串,然后客户端需要将字符串转化成JS Object
【demo03.html】
axios({
method:"POST",
url:"axios02.do",
data:{
uname:vue.uname,
pwd:vue.pwd
}
})
.then(function (value) {
var data = value.data;
//data对应的数据:{uname:"dc",pwd:"ok"}
vue.uname = data.uname;
vue.pwd = data.pwd;
//此处value中的data返回的实时js object,因此可以直接点出属性
//如果获取的是一个字符串:“{uname:"dc",pwd:"ok"}”
//js语言中,也有字符串和js对象之间互换的API
//string JSON.stringify(object) object -> string
//object JSON.parse(string) string -> object
})
.catch(function (reason) {
console.log(reason);
});
【Axios03Servlet.java】
@WebServlet("/axios03.do")
public class Axios03Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
StringBuffer stringBuffer = new StringBuffer("");
BufferedReader bufferedReader = request.getReader();
String str = null;
while ((str= bufferedReader.readLine()) != null) {
stringBuffer.append(str);
}
str = stringBuffer.toString();
//已知String 需要转换成Java Object
Gson gson = new Gson ();
//Gson有两个API
//1.fromJson(String,T) 将字符串转化成Java Object
//2.toJson(Java Object) 将Java Object转化成json字符串,这样才能响应给客户端
User user = gson.fromJson(str,User.class);
user.setUname("dc");
user.setPwd("121524");
//假设user是从数据库查出来的,需要将其转化成json格式的字符串,然后响应给客户端
String userJsonStr = gson.toJson(user);
response.setCharacterEncoding("utf-8");
//
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(userJsonStr);
}
}
3.js
语言中,也有字符串和js
对象之间互换的API
-
string -> object
var str = "{\"uname\":\"lina\",\"age\":20}"; var user = JSON.parse(str); alert(typeof user); alert(user.uname+"_"+user.age);
-
object -> string
var user = {"uname":"lina","age":99}; alert(typeof user); var userStr = JSON.stringify(user); alert(typeof userStr); alert(userStr);
4. *** 作图
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)