Ajax&Axios

开发者 2024-10-5 11:00:50 98 0 来自 中国
Ajax

概念


  • AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML
作用


  • 与服务器举行数据交换:通过AJAX可以给服务器发送哀求,并获取服务器相应的数据
  • 后台发送:欣赏器的哀求是后台js发送给服务器的,js会创建单独的线程发送异步哀求,这个线程不会影响欣赏器的线程运行
  • 局部刷新:欣赏器吸取到结果以后举行页面局部刷新
未利用Ajax和利用Ajax后对比


  • 没学习AJAX之前发送哀求和获取相应的方式
- 欣赏器发送HTTP返回的是一个完备的网页,欣赏器会表现这个网页- 欣赏器会期待服务器的相应(同步哀求)

  • 学习AJAX之后


  • AJAX返回的是部门数据,欣赏器内容不会厘革
  • 后台发送,不影响欣赏器的操纵(异步哀求)
例子

利用了AJAX和服务器举行通讯,就可以利用 HTML+AJAX来更换JSP页面了

  • 利用HTTP获取一个完备的网页


  • 登录的时间输入用户名,失去焦点的时间,就会利用AJAX发送一个异步哀求到后台,然后返回用户存在与否的结果
Ajax原生API


  • 创建 XMLHttpRequest 对象:用于和服务器交换数据
let xmlhttp = new XMLHttpRequest()

  • 设置状态回调监听,获取服务器相应数据
xmlHttp.onreadystatechange=function (){    if(xmlHttp.readyState==4 && xmlHttp.status=200){        alert(xmlHttp.responseText);    }}

  • 发送哀求
//设置哀求方式和资源地点xmlhttp.open("GET",“url");//发送哀求xmlhttp.send();

  • API简介
属性形貌onreadystatechange界说了当 readyState 属性发生改变时所调用的函数。readyState生存了 XMLHttpRequest 的状态。
0: 哀求未初始化
1: 服务器毗连已创建
2: 哀求已吸取
3: 正在处理处罚哀求
4: 哀求已完成且相应已停当status200: "OK"
403: "Forbidden"
404: "age not found"statusText返回状态文本(比方 "OK" 或 "Not Found")Ajax快速入门

学习网站:https://www.w3school.com.cn/
步调

  • 编写AjaxServlet,并利用response输出字符串
/** * Ajax 异步的JavaScript和XML */@WebServlet(value = "/ajaxServlet")public class AjaxServlet extends HttpServlet {    private static final long serialVersionUID = -2594113160049777689L;    @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 {        doGet(request, response);    }}

  • 编写HTML
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Ajax快速入门</title></head><body><script>    //创建Ajax的焦点对象    let xmlHttpRequest = new XMLHttpRequest();    //设置监听,获取哀求的相应数据(onreadystatechange 就是在状态厘革时举行回调)    xmlHttpRequest.onreadystatechange = function () {        //readyState == 4 表示哀求完成,而且可以返回了相应数据到欣赏器        //status == 200 表示相应码,200为哀求乐成,就可以获取相应数据        if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {            alert(xmlHttpRequest.responseText);        }    }    //哀求方式和URL的配置,并发送哀求    xmlHttpRequest.open('GET', "ajaxServlet");    xmlHttpRequest.send();</script></body></html>Axios异步框架


  • Axios 对原生的AJAX举行封装,简化誊写
  • 官网:https://www.axios-http.cn
注意:axios会自动将字符串的true和false转换为boolean类型
Axios快速入门

步调:

  • 编写AxiosServlet,吸取哀求参数,并利用response输出字符串
@WebServlet(value = "/axiosServlet")public class AxiosServlet extends HttpServlet {    private static final long serialVersionUID = 7336379928784176967L;    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String username = request.getParameter("username");        String password = request.getParameter("password");        System.out.println("吸取到axios的哀求:" + username + "=" + password);        response.getWriter().write("hello " + username);    }    @Override    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doGet(request, response);    }}

  • 下载并引入axios的js文件
<script src="js/axios-0.18.0.js"></script>

  • 发送GET哀求
axios({    method: "GET",    url: "axiosServlet?username=zhangsan&password=333"}).then(resp => {    //resp 表示相应对象,resp.data,表示相应数据    alert(resp.data)});

  • 发送POST哀求
axios({    method: "OST",    url: "axiosServlet",    data: "username=lisi&password=444"}).then(resp => {    alert(resp.data)});

  • 编写HTML
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Axios快速入门</title>    <script src="js/axios-0.18.0.js"></script></head><body><button >GET哀求</button><button >ost哀求</button><script>    //利用Axios的GET哀求    function testGet() {        axios({            method: "GET",            url: "axiosServlet?username=zhangsan&password=333"        }).then(resp => {            //resp 表示相应对象,resp.data,表示相应数据            alert(resp.data)        });    }    //利用Axios的POST哀求    function testPost() {        axios({            method: "OST",            url: "axiosServlet",            data: "username=lisi&password=444"        }).then(resp => {            alert(resp.data)        });    }</script></body></html>Axios 哀求方式别名


  • 为了方便起见, Axios 已经为全部支持的哀求方法提供了别名
axios.request(config)axios.get(url[, config])axios.delete(url[, config])axios.head(url[, config])axios.options(url[, config])axios.post(url[, data[, config]])axios.put(url[, data[, config]])axios.patch(url[, data[, config]])

  • 常用的别名
方法名作用get(url)发起GET方式哀求post(url,哀求参数)发起POST方式哀求

  • 发送GET哀求
axios.get("axiosServlet?username=zhangsan&password=333").then(resp => {    //resp.data 代表相应的数据    alert(resp.data)});

  • 发送POST哀求
axios.post("axiosServlet", "username=wangwu&password=555").then(resp => {    alert(resp.data)});

  • 编写HTML
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Axios别名</title>    <script src="js/axios-0.18.0.js"></script></head><body><button >GET哀求</button><button >ost哀求</button><script>    //利用Axios的别名,举行GET哀求    function testGet() {        //参数:哀求路径和哀求参数(存放在哀求行)        axios.get("axiosServlet?username=zhangsan&password=333")            .then(resp => {                //resp.data 代表相应的数据                alert(resp.data)            });    }    //利用Axios的别名方式,举行POST哀求    function testPost() {        //第一个参数:哀求路径(存放在哀求行)        //第二个参数:哀求参数(存放在哀求体)        axios.post("axiosServlet", "username=wangwu&password=555")            .then(resp => {                alert(resp.data)            });    }</script></body></html>
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-23 16:02, Processed in 0.171395 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表