AJAX & Axios 总结

2023-11-02

1. AJAX

在这里插入图片描述

即异步的JavaScript和XML,是一种前端的动态请求方式

1.1 作用

①与服务器进行数据交换

通过AJAX可以给服务器发送请求,并接收服务器响应的数据;

即通过AJAX可以将服务器返回的数据传给浏览器,而html、javaScript做不到从服务器获取数据,如服务器查询了数据,无法通过javaScript将数据交给浏览器;

以前做法
数据从Servlet 查询出来,在Servlet中将数据存入request域,再转发到jsp 去展示数据!
在这里插入图片描述

用JSP原因
只用HTML无法获取服务端返回的数据!所以用jsp;而AJAX可以获取服务端的数据了,所以替代了jsp!

现在做法:
使用AJAX和服务器通信,使用AJAX+HTML 来替换JSP
在这里插入图片描述

②异步交互

可以【在不重新加载整个页面的情况下】,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户是否可用校验等等;

:搜索联想
在这里插入图片描述

异步和同步

同步
客户端浏览器请求服务端,服务器此时要处理,处理这段时间客户端必须等待,等服务器给客户端做出响应,等客户端收到响应后才能继续访问!

异步
如果客户端发送的是异步请求,那么客户端不用等待服务器端的响应,而可以继续执行其他操作;’
在这里插入图片描述

:“提交注册”就是同步请求,点击后浏览器会刷新等待;
而发送异步请求后,浏览器并不会刷新等待,而是悄悄发送请求给浏览器,用户可以继续做其他操作;

异步回调: 指的是在发起一个异步任务的同时指定一个函数,在异步任务完成时会自动的调用这个函数;

1.2 基本使用

分两端, 在服务端写接收请求并响应数据的代码,在HTML写请求客户端的代码,由AJAX去接收servlet发来的数据;

后端:编写AjaxServlet,使用response输出要给前端的数据

前端

  1. 创建核心对象 XMLHttpRequest 对象,用于和服务器交换数据;
    在这里插入图片描述

  2. 向服务器发送请求;
    open()方法打开请求,GET即方式,url 是servlet 全路径 ,(第三个参数是同步true,异步false,默认异步)
    在这里插入图片描述
    为什么是全路径:因为浏览器和Servlet将来不在一个服务器部署,是前后端分开部署的,所以要全类名!

  3. 获取服务器响应数据
    使用xmlhttp 绑定事件属性onreadystatechange,判断是否已经完成响应,则执行回调函数function;

    完成响应判断:就绪状态是4(请求发送完响应已收到)且HTTP响应报文的响应状态码是200 即成功,则获取响应数据;
    在这里插入图片描述

readyState状态码
在这里插入图片描述

1.3 案例

需求:当用户名框失去焦点(onblur事件)时,检验用户名是否存在于数据库中;
在这里插入图片描述

思路

前端:
1.在前端页面的onblur事件属性绑定函数,
2.当onblur事件发生,使用AJAX发送请求并携带username数据;
3.前端获取响应,执行回调函数

后端:
1.获取username
2.调用Service查询数
3.响应标记!(标记的含义和前端协调好)

SelectUserServlet:

从request获取前端输入的用户名username,然后返回响应到response;
在这里插入图片描述

register.html:

注意:

  1. 请求方式是GET
  2. 这里表单的action 不是servlet地址,其请求是使用AJAX发往servlet的;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>欢迎注册</title>
    <link href="css/register.css" rel="stylesheet">
</head>
<body>

<div class="form-div">
    <div class="reg-content">
        <h1>欢迎注册</h1>
        <span>已有帐号?</span> <a href="login.html">登录</a>
    </div>
    <form id="reg-form" action="#" method="get">

        <table>

            <tr>
                <td>用户名</td>
                <td class="inputs">
                    <input name="username" type="text" id="username">
                    <br>
                    <span id="username_err" class="err_msg" style="display: none">用户名已存在</span>
                </td>

            </tr>

            <tr>
                <td>密码</td>
                <td class="inputs">
                    <input name="password" type="password" id="password">
                    <br>
                    <span id="password_err" class="err_msg" style="display: none">密码格式有误</span>
                </td>
            </tr>


            <tr>
                <td>验证码</td>
                <td class="inputs">
                    <input name="checkCode" type="text" id="checkCode">
                    <img src="imgs/a.jpg">
                    <a href="#" id="changeImg">看不清?</a>
                </td>
            </tr>

        </table>

        <div class="buttons">
            <input value="注 册" type="submit" id="reg_btn">
        </div>
        <br class="clear">
    </form>

</div>

register.html中的<script

注意:

  1. servelt的路径是完整路径
  2. GET方式要把数据写入url 后面!
    在这里插入图片描述
    效果
    光标移开时即发送异步请求,客户端获取响应后执行回调函数,显示提示语;
    在这里插入图片描述

2. Axios异步框架

Axios是一个基于promise的网络请求库,作用于node.js和浏览器中;
是对原生AJAX的封装,简化书写;

2.1 基本使用

  1. 引入axios的JavaScript文件(源码)
    在这里插入图片描述
  2. 发送请求,注意在axios()中写 { JavaScript对象 }
    .then设置回调函数,即servlet发的响应被前端收到后会执行的方法!
    在这里插入图片描述

GET和POST方式区别
GET的参数要传入url中;而POST的参数要单独放在data中;

2.2 案例

需求:后端获取输入参数,并返回 “hello Axios”

axiosServlet:

1.接收参数
2.设置响应到response
在这里插入图片描述

axios-demo.html:

1.先将axios文件放入js文件夹,再将axios的JavaScript文件(源码)引入;
2.将script代码写到 { JavaScript对象 } 内:

注意

  1. 先拿到servlet的全路径,如果是GET请求方式,则把请求参数放在路径后面!
  2. 当方法执行后,response就会收到请求数据,在axios中是resp,resp.data就是由servlet发出来的数据;

GET方式: 参数放在url后面
在这里插入图片描述

POST方式: 参数放在请求体中,即 data
在这里插入图片描述

注意
1. 有两个data,一个是请求方式为POST时发送给servlet的参数,第二个是response返回来的数据;
2. 这里的data数据并不是来自于表单 而是写死的,如果发送表单数据则需要将表单数据先转换JSON,再通过AJAX发送给servlet !

效果
访问axios-demo.html:
即servlet收到了请求并返回hello Axios,客户端AJAX收到响应后执行回调函数,中将这句话alert !

在这里插入图片描述

2.3 请求方式别名(简化)

为了方便,axios已经为所有请求方式提供了别名:
在这里插入图片描述

改进上例
GET
在这里插入图片描述
POST
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AJAX & Axios 总结 的相关文章

  • 使用 jQuery 和 AJAX 跨域 PHP 调用

    我遇到一个问题 我使用的服务器未配置为允许 PHP 或 CGI 并且我需要使用从该服务器上的表单收到的变量向所有者发送邮件 例如一般查询 反馈表单 有谁知道我如何在配置为使用 PHP 的另一个域上调用一个简单的 PHP 文件 然后执行mai
  • Laravel 5.3 中 ajax POST 的最小工作示例

    有人可以用完整的最小示例解释 Laravel 5 3 中的 ajax post 方法吗 我知道网络上有一些资源 但我错过了一个简洁 直接的最小示例 我认为您对模型 控制器 视图范例有基本的了解 对 Laravel 有基本的了解 并对 Jav
  • 如何将变量从 JavaScript 传递到 PHP?

    我正在使用 jQuery 来计算价格 这是我的 JavaScript 的一小段 Prices radio var curLam gloss input name lamination click function var gloss 5 v
  • 在ajax上下文中使flask中的会话过期

    我在用permanent session lifetime在一段时间不活动后使用户会话过期 问题是 这个请求是通过 ajax 发出的 所以我无法在 ajax 上下文中以 Flask 的正常行为进行重定向 http xxxx login ne
  • JSON.stringify() 和 JavaScript 对象

    我想也许我错过了 JavaScript 中的一些东西 而我现在才刚刚开始学习 我在 Chrome 控制台中尝试了以下代码 a a name test JSON stringify a which returns value a new Ob
  • 如何在twitter首页制作像热门推文那样的滚动新闻? (php)

    我想让一个网站使用 wp 并且我想在 twitter 主页中添加滚动新闻 例如热门推文 当自定义在我的页面的每个部分发布新回复时 新主题将显示在该滚动新闻部分中 它们都来自数据库的最新10条 怎么做 谢谢 使用 Jquery 您可以使 di
  • 在窗口卸载之前调用 jquery ajax 函数的最终方法是什么?

    我需要在窗口卸载之前调用 jquery ajax 函数 就我而言 它是一个 POST 我不关心返回结果 我只想更新数据库 所以答案似乎是将一个函数绑定到 unload 事件 即使用 jquery unload 函数 并且该函数进行 ajax
  • 如何防止点击 时页面刷新

    我试图在用户单击时阻止页面刷新
  • Rails 3:使用 AJAX 请求更新 URL 参数

    我有一个过滤器和一个产品列表 id 名称 创建日期 我可以按 ID 名称或创建日期进行过滤 通过 AJAX 请求 我更新了内容 div 但显然 URL 没有改变 如何将参数附加到 URL 例如 localhost 3000 dashboar
  • 在asp.net mvc中如何知道请求是否是ajax?

    有人我怎么知道请求是否是ajax 我使用 jquery 进行 ajax 还有Request IsAjaxRequest如果您使用的是更高版本的 MVC 我不再有版本 1 所以我不能说它是否在版本 1 中 如果您需要在 Global asax
  • AJAX 请求返回 200 OK 但失败,尽管返回数据是 JSON

    Edit 就我而言 它没有返回正确信息的原因是我试图使用 JSONP 连接到 CORS 数据设置 而服务器没有为我的特定计算机访问设置它 我需要与某人交谈并调整服务器配置文件的权限 这就是真正发生的事情 我无法弄清楚 因为我认为 CORS
  • 两个 $.post 请求一个接一个。第二个 $.post 请求未执行

    我有一个 javascript 函数 其中有两个 post 请求 两个 post 请求都应该被执行 但有时 第二个 post 请求不会被执行 这可能是什么原因 post 是 ajax 结构的缩写形式 我通常更喜欢使用 ajax 结构因为 更
  • 仅在图像加载后应用 jQuery 瀑布“回流”

    我正在使用 jQuery 瀑布来显示网格样式 为了阻止常见的图像重叠问题 我将瀑布方法包装在 load 函数中 例如 window load function buildcontainer waterfall colMinWidth 260
  • 未为 OPTIONS Ajax 请求设置标头

    我有一个ascx page GetToken ashx public void ProcessRequest HttpContext context context Response ContentType text plain conte
  • jquery ajax错误回调

    我在这里需要一些建议或者一些解释 我有一个 jquery ajax 调用 ajax type GET url base url ajax fetch counts dataType json data error function xhr
  • 为什么我收到此错误:“未捕获类型错误:无法读取未定义的属性“标题””?

    我正在尝试写一个ajax网络应用程序 我有一个函数应该请求一个json对象 然后使用它来重新 填充网站 这里是JavaScript有问题 第 8 16 行 window onload LoadData Home var doc functi
  • 如何向 JSF 应用程序发送手动 jQuery Ajax 请求?

    我正在做一个POST 使用 jQuery 的请求似乎成功了 但是我如何在服务器端使用它并修改响应 我是否需要另一个 servlet 因为 Faces Servlet 不是为处理这个问题而设计的 ajax type POST data sta
  • 如何将值传递到 selectOneMenu 中的监听器

    我有 2 个下拉菜单 类型和代码 如果值 A 或 B 或 C 我希望代码下拉列表根据类型下拉列表更改值 如何将 A 或 B 或 C 的值传递给侦听器 以便它可以理解和处理我的 List
  • 如何过滤 jQuery.ajax() 返回的数据?

    当使用jQuery ajax 方法中 我正在努力过滤返回的数据以获取我所需要的数据 我知道这很容易使用 load 可能还有其他 jQuery AJAX 方法 但我需要使用 ajax 具体来说 例如 我知道这是可行的 var title da
  • 如何在phonegap应用程序中使用存储在localStorage中的json feed?

    这就是我正在做的 向我的网络服务器发出请求 响应采用 json 格式 使用 jquery 模板在我的应用程序中呈现回调数据 非常简单 就像魅力一样 问题是 我想在本地存储一些数据 这样我的应用程序就不必每次都从服务器获取它 3g 很慢 每笔

随机推荐

  • JS技巧---Set数组去重

    在 ES6 中 引入了一个新的数据结构类型 Set 而 Set 与 Array 的结构是很类似的 且 Set 和 Array 可以相互进行转换 数组去重 也算是一个比较常见的前端面试题了 方法有很多种 这里不多赘述 下面我们看看用 Set
  • 互联网黑话

    互联网岗位的口头禅 1 各个岗位的口头禅 产品岗 没排上期 下个版本 设计岗 别戳屏幕 研发岗 实现不了 测试岗 醒醒 有bug 数据岗 你们要这个干啥 运维岗 磁盘满了 网络抖动 程序员终极大法 删库跑路 法务岗 这个有风险 公关岗 建议
  • 深入云存储系统Swift核心组件:Ring实现原理剖析

    深入云存储系统Swift核心组件 Ring实现原理剖析 简介 OpenStack是一个美国国家航空航天局和Rackspace合作研发的开源云计算项目 并成为Apache下的一个重要开源项目 目前已经发展到了180家公司参与其中 OpenSt
  • 探索MVVM -- 体会DataBinding的魅力

    前言 本文用到的demo是以 ONE 一个 的API为基础 模仿其功能实践一下MVVM的用法 以感受MVVM架构为主要目的 并未完全模仿其功能 代码结构借鉴了Google的sample 虽然谷歌今年出了一个架构组件指南 来指导开发者构建Ap
  • pdf加密在线破解

    http www unlock pdf com
  • wsl+ zsh + oh-my-zsh配置

    wsl zsh oh my zsh配置 经常在windows平台办公 配置一些开发环境时在Linux中会比较简单 参照了在Linux服务器中的配置 同步在WSL中 测试平台 WIN10 X64专业版 V1903 只支持WSl V1 WSL
  • Unity编辑器扩展之Excel表转CS文件(C#类)

    前言 这里我们需要理解动态生成CS文件的一些基础 https blog csdn net qq 37254346 article details 103216761 怎样读取Excel表这里就不说了 Excel表转CS文件 这是我们需要转的
  • EEPROM芯片(24c02)使用详解(I2C通信时序分析、操作源码分析、原理图分析)

    1 前言 1 本文主要是通过24c02芯片来讲解I2C接口的EEPROM操作方法 包含底层时序和读写的代码 2 大部分代码是EEPROM芯片通用的 但是其中关于某些时间的要求 是和具体芯片相关的 和主控芯片和外设芯片都有关系 需要具体分析
  • Android中mmap原理及应用简析

    1 mmap介绍 mmap是一种内存映射文件的方法 即将一个文件或者其他对象映射到进程的地址空间 实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对应关系 实现这样的映射关系后 进程就可以采用指针的方式读写操作这一块内存 而系统会自动
  • 网络参考模型

    网络参考模型 1 OSI参考模型 1 1 产生背景 在网络发展的早期时代 网络技术的发展变化速度非常快 计算机网络变得越来越复杂 新的协议和应用不断产生 而网络设备大部分都是按厂商自己的标准生产 不能兼容 很难相互间进行通信 为了解决网络之
  • 【python数据挖掘课程】十七.社交网络Networkx库分析人物关系(初识篇)

    这是 Python数据挖掘课程 系列文章 也是我大数据金融学院上课的部分内容 本章主要讲述复杂网络或社交网络基础知识 通过Networkx扩展包绘制人物关系 并分析了班级学生的关系学院信息 本篇文章为初始篇 基础文章希望对你有所帮助 如果文
  • 面试突击37:线程安全问题的解决方案有哪些?

    Python微信订餐小程序课程视频 https edu csdn net course detail 36074 Python实战量化交易理财系统 https edu csdn net course detail 35475 线程安全是指某
  • anaconda切换为国内源

    查看配置文件 conda config show windows下 1 添加清华源 命令行中直接使用以下命令 conda config add channels https mirrors tuna tsinghua edu cn anac
  • Unity3d 物体速度快直接穿透墙体没有发生碰撞怎么办?

    1 Edit gt Project Setting gt Time 调节TimeManager的fixed Timestep
  • 如何在Linux虚拟机或服务器上发布或部署一个Spring项目

    1 开放端口 项目需要使用哪些端口就开放哪些端口 开放方法如下 1 进入控制台 选择安全组 2 点击蓝色连接 点击手动添加 3 添加需要开放的端口 2 安装服务器远程连接工具 Xshell 的安装使用 Xshell是一个终端模拟软件 换言之
  • stm32 USB HID单点触摸屏上报安卓触摸信号

    此工程在个人博客使用stm32配置自定义的HID设备基础上修改 在上个博客中我们介绍了如何使用stm32配置成自定义的HID设备 使用usb通讯 但是仅仅只是实现了基于USB的通讯 真正需要运用的时候还需要在此基础上定义我们自己的协议 然后
  • Unity接入越南社交软件Zalo登录之获取用户信息

    根据Unity接入越南社交软件Zalo登录 Android 之SDK接入接入SDK后 需要获取用户name id 头像 性别的信息 这一篇文章教你如何获取 根据官网文档获取用户信息API ZaloSDK Instance getProfil
  • CPU和线程概述、线程池如何合理设置

    目录 1 物理核 虚拟核 单核cpu和多核cpu 2 进程和线程 理解 对比 线程切换 线程开销 3 串行 并发 并行 串行 并发 并行 4 多核下线程数量选择 计算密集型 IO密集型 提高性能的方向 5 并发编程网上关于线程池的总结 参考
  • PAT A1039使用string也可以不超时!!!

    亲测 直接使用map
  • AJAX & Axios 总结

    AJAX Axios 1 AJAX 1 1 作用 与服务器进行数据交换 异步交互 异步和同步 1 2 基本使用 1 3 案例 SelectUserServlet register html register html中的