Ajax 是指一种创建交互式网页应用的开发技术。Ajax = 异步 JavaScript 和 XML。
浏览器访问服务器的方式
ajax.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>ajax</title>
</head>
<body>
<input type="text">
<input type="button" value="jQuery发送异步请求" οnclick="run()">
</body>
<script src="./jquery-1.8.3.min.js"></script>
<script>
function run(){
//ajax请求
$.ajax({
url:"${pageContext.request.contextPath}/ajax",
async:true,
data:{name:"张三"},
type:"post",
dataType:"text",
success:function (res) {
console.log(res);
alert("响应成功,res: " + res);
},
error:function () {
alert("响应失败!")
}
});
}
</script>
</html>
servlet
package com.example.ajax_demo01;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "AjaxServlet", value = "/ajax")
public class AjaxServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、获取请求数据
String name = request.getParameter("name");
System.out.println("ajax发送的数据:" + name);
//模拟延时响应
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//2、响应数据
response.setContentType("html/text;charset=utf8");
response.getWriter().write("响应数据!");
}
}
运行tomcat,测试
axios是VUE中结合网络数据进行应用的开发,是目前十分流行网络请求库,专门用来发送请求,其内部还是ajax,进行封装之后使用更加方便。
axios作用: 在浏览器中可以帮助我们完成 ajax异步请求的发送.
<!-- 官网提供的 axios 在线地址 -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
get
axios.get(地址?key=value&key2=value2).then(function(response){},function(error)
{});
post
axios.post(
地址,
{key:value,key2:value2})
.then(
function(response){},
function(error){})
接口介绍
有两个公开接口可供测试使用
接口1:随机笑话
请求地址:https://autumnfish.cn/api/joke/list
请求方法:get
请求参数:num(笑话条数,数字)
响应内容:随机笑话
接口2:用户注册
请求地址:https://autumnfish.cn/api/user/reg
请求方法:post
请求参数:username(用户名,字符串)
响应内容:注册成功或失败
测试代码
get测试
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>axios测试</title>
</head>
<body>
<div id="app">
<input type="button" value="get请求" @click="get" />
</div>
</body>
<script src="js/vue.min.js"></script>
<script src="js/axios.min.js"></script>
<script>
var VM = new Vue({
el: "#app",
data: {},
methods: {
/*
请求地址:https://autumnfish.cn/api/joke/list
请求方法:get
请求参数:num(笑话条数,数字)
响应内容:随机笑话
*/
get: function () {
axios.get("https://autumnfish.cn/api/joke/list?num=1").then(
function (res) {
alert("请求成功!res: " + res);
},
function (err) {
alert("请求失败!err: " + err);
}
);
},
},
});
</script>
</html>
测试结果
post测试 修改代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>axios测试</title>
</head>
<body>
<div id="app">
<!-- <input type="button" value="get请求" @click="get" /> -->
<input type="button" value="post请求" @click="post" />
</div>
</body>
<script src="js/vue.min.js"></script>
<script src="js/axios.min.js"></script>
<script>
var VM = new Vue({
el: "#app",
data: {},
methods: {
/*
请求地址:https://autumnfish.cn/api/joke/list
请求方法:get
请求参数:num(笑话条数,数字)
响应内容:随机笑话
*/
get: function () {
axios.get("https://autumnfish.cn/api/joke/list?num=1").then(
function (res) {
alert("请求成功!res: " + res);
},
function (err) {
alert("请求失败!err: " + err);
}
);
},
/*
用户注册
请求地址:https://autumnfish.cn/api/user/reg
请求方法:post
请求参数:username:"用户民"
响应内容:注册成功或失败
*/
post: function () {
axios
.post("https://autumnfish.cn/api/user/reg", {
usernmae: "你好hello",
})
.then(
function (res) {
alert("请求成功!res: " + res);
},
function (err) {
alert("请求失败!err: " + err);
}
);
},
},
});
</script>
</html>
测试结果
注:本人测试需在edge浏览器,否则链接不上
通过vue+axios 完成一个获取笑话的案例.
请求地址:https://autumnfish.cn/api/joke
请求方法:get
请求参数:无
响应内容:随机笑话
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>获取笑话</title>
</head>
<body>
<div id="app">
<input type="button" value="获取一个笑话" @click="getJoke" />
<p>{{joke}}</p>
</div>
</body>
<script src="js/vue.min.js"></script>
<script src="js/axios.min.js"></script>
<script>
var Vm = new Vue({
el: "#app",
data: {
joke: "",
},
methods: {
getJoke: function () {
/*
请求地址:https://autumnfish.cn/api/joke
请求方法:get
请求参数:无
响应内容:随机笑话
*/
var tmp = this; //回调函数中不能直接获取this,需要定义变量传入
axios.get("https://autumnfish.cn/api/joke").then(
function (res) {
//获取笑话,笑话在响应的data中
tmp.joke = res.data;
},
function (err) {}
);
},
},
});
</script>
</html>
注意:回调函数中不能直接获取this,需要定义变量传入
测试结果