JavaWeb开发 —— Ajax

news2024/10/6 1:34:55

目录

一、介绍

二、原生Ajax

三、Axios

四、案例分析


一、介绍

① 概念:Asynchronous JavaScript And XML,异步的JavaScript和XML。

② 作用:

  • 数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。
  • 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用的校验等等。

③ 同步与异步:

 二、原生Ajax

  1. 准备数据地址:http://yapi.smart-xwork.cn/mock/169327/emp/list
  2. 创建XMLHttpRequest对象:用于和服务器交换数据
  3. 向服务器发送请求
  4. 获取服务器响应数据

详细内容见:W3school / Ajax

XMLHttpRequest对象属性:

属性描述
onreadystatechange定义当 readystate 属性发生变化时被调用的函数
readyState

保存XMLHttpRequest的状态。

  • 0:请求未初始化
  • 1:服务器连接已建立
  • 2:请求已收到
  • 3:正在处理请求
  • 4:请求已完成且响应已就绪
responseText以字符串返回响应数据
responseXML以XML 数据返回响应数据
status

返回请求的状态号。

  • 200:" OK " 
  • 403:" Forbidden "
  • 404:" Not Found "
statusText返回状态文本(比如 " OK " 或 " Not Found ")
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="button" value="获取数据" onclick="getData()">

    <div id = "div1"></div>
    
</body>
<script>
    function getData(){
        //1.创建XMLHttpRequest
        var xmlHttpRequest = new xmlHttpRequest();

        //2.发送异步请求
        xmlHttpRequest.open('GET','http://yapi.smart-xwork.cn/mock/169327/emp/list');
        xmlHttpRequest.send();  //发送请求

        //3.获取服务响应数据
        xmlHttpRequest.onreadystatechange = function(){
            if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){
                document.getElementById('div1').innerHTML  = xmlHttpRequest.respnseText;
            }
        }
    }
</script>
</html>

注意:但是这种操作比较繁琐,在早期浏览器中存在浏览器兼容性问题。索引在目前开发过程中,原生Ajax基本不再使用,而目前使用的多是基于原生Ajax的封装技术,比如Axios等。

三、Axios

① 介绍:Axios 对原生的Ajax进行了封装,简化书写,快速开发。

② 官网:http://www.axios-http.cn/

③ 使用方式:

  1. 引入Axios 的 js 文件。
    <script src = "js/axios-0.18.0.js"></script>
  2. 使用Axios 发送请求,并获取响应结果。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/axios-0.18.0.js"></script>
</head>
<body>
    <input type="button" value="获取数据GET" onclick="get()">

    <input type="button" value="删除数据POST" onclick="post()">
</body>
<script>
    function get(){
        //通过axios发送异步请求 - get
        axios({
            method:"get",
            URL:"http://yapi.smart-xwork.cn/mock/169327/emp/list"
            //成功回调函数
        }).then(result =>{
            console.log(result.data);
        })
    }
    function post(){
        //通过axios发送异步请求 - post
        axios({
            method:"get",
            URL:"http://yapi.smart-xwork.cn/mock/169327/emp/deleteById",
            data:"id=1"
            //成功回调函数
        }).then(result =>{
            console.log(result.data);
        })
    }
</script>
</html>

④ 请求方式别名:

  • axios.get( url  [ , config ] )
  • axios.delete( url [ , config ] )
  • axios.post( url  [ , data [ , config ]] )
  • axios.put( url [ , data [ , config ]] )
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/axios-0.18.0.js"></script>
</head>
<body>
    <input type="button" value="获取数据GET" onclick="get()">

    <input type="button" value="删除数据POST" onclick="post()">
</body>
<script>
    function get(){
        axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then(result =>{
            console.log(result.data);
        })
    }
    function post(){
        axios.post("http://yapi.smart-xwork.cn/mock/169327/emp/deleteById","id=1").then(result =>{
            console.log(result.data);
        })
    }
</script>
</html>

四、案例分析

基于Vue以及Axios完成数据的动态加载展示:

  1. 数据准备的url:http://yapi.smart-xwork.cn/mock/169327/emp/list
  2. 在页面加载完成后,自动发送异步请求,加载数据,渲染展示页面(性别:1代表男,2代表女)。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/axios-0.18.0.js"></script>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id = "app">
        <table border="1" cellspacing = "0" width = "60%">
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>图像</th>
                <th>性别</th>
                <th>入职日期</th>
                <th>最后操作时间</th>
            </tr>
            <tr align="center" v-for = "(emp ,index) in emps">
                <td>{{index + 1}}</td>
                <td>{{emp.name}}</td>
                <td>
                    <img :src = "emp.image" width="70px" height="50px">
                </td>
                <td>
                    <span v-show = "emp.gender == 1">男</span>
                    <span v-show = "emp.gender == 0">女</span>
                </td>
                <td>{{emp.job}}</td>
                <td>{{emp.entrydate}}</td>
                <td>{{emp.updatetime}}</td>
            </tr>
        </table>
    </div>
</body>
<script>
    new vue({
        el:"#app",
        data:{
            emps:[]
        },
        mounted(){
            //发送异步请求,加载数据
            axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then(result =>{
               this.emps =  result.data.data;
            })
        }
    });
</script>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多元函数的基本概念——“高等数学”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容是多元函数的基本概念&#xff0c;下面&#xff0c;让我们一起进入多元函数的世界吧 平面点集 多元函数的概念 多元函数的极限 多元函数的连续性 有界闭区域上多元连续函数的性质 平面点集 第一个是坐标平…

中间表示- 到达定义分析

基本概念 定义&#xff08;def&#xff09;&#xff1a;对变量的赋值 使用&#xff08;use&#xff09;&#xff1a;对变量值的读取 问题&#xff1a;能把上图中的y替换为3吗&#xff1f;如果能&#xff0c;这称之为“常量传播”优化。 该问题等价于&#xff0c;有哪些对变量y…

R730服务器热插拔换磁盘(raid阵列)

r730服务器发现磁盘闪橙等&#xff0c;说明磁盘报警了&#xff0c;这时候我们就要换磁盘了。 由于本服务器磁盘是raid5的阵列磁盘&#xff0c;所以要采用热插拔的方式换磁盘。 这边要注意的是&#xff0c;不能关机的时候&#xff0c;直接来换磁盘。 因为关机换磁盘&#xff0c…

golang指针相关

指针相关的部分实在是没有搞太明白&#xff0c;抽时间来总结下。 1.指针相关基础知识 比如现在有一句话&#xff1a;『谜底666』&#xff0c;这句话在程序中一启动&#xff0c;就要加载到内存中&#xff0c;假如内存地址0x123456&#xff0c;然后我们可以将这句话复制给变量A&…

什么是服务架构?微服务架构的优势又是什么?

文章目录1.1 单体架构1.2 分布式架构1.3 微服务架构1.4 单体架构和分布式架构的区分1.4 服务架构的优劣点1.4.1 单体架构1.4.2 分布式架构1.4.3 微服务架构1.5 总结1.1 单体架构 单体架构&#xff08;Monolithic Architecture&#xff09;是一种传统的软件架构&#xff0c;它将…

算法学习day56

算法学习day561.力扣583. 两个字符串的删除操作1.1 题目描述1.2分析1.3 代码2.力扣72. 编辑距离2.1 题目描述2.2 分析2.3 代码3.参考资料1.力扣583. 两个字符串的删除操作 1.1 题目描述 题目描述&#xff1a; 给定两个单词word1和word2&#xff0c;找到使得word1和word2相同…

探索数据结构之精髓:单链表解密

文章目录1. 前言2. 单链表的特点3. 单链表的基础操作&#x1f351; 接口总览&#x1f351; 初始化操作&#x1f351; 插入操作&#x1f345; 优化操作&#x1f351; 删除操作&#x1f345; 优化操作&#x1f351; 获取元素&#x1f345; 按置查找&#x1f345; 按值查找&#x…

从C出发 20 --- 函数参数深度剖析

我们在编写这个函数的时候参数 n 的值具体是多少&#xff1f; 在编写一个函数的时候参数值是没法确定的&#xff0c;所以将 (int n) 这个参数命名为形参 那么这个参数的值什么时候指定&#xff0c;具体函数调用的时候指定 比如 在main 里面调用 实参用来初始化形参 初始化之…

安装多个版本的Node.js的方法

要在同一台计算机上安装多个版本的Node.js&#xff0c;可以使用以下几种方法&#xff1a; 使用nvm&#xff08;Node Version Manager&#xff09;&#xff1a;nvm是一个用于管理多个Active Node.js版本的工具。您可以使用nvm轻松地在系统中安装、卸载和切换不同版本的Node.js。…

Leetcode每日一题——“消失的数字”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰又开新专栏了&#xff0c;以后会在Leetcode上面进行刷题&#xff0c;尽量每天写一道&#xff0c;请大家监督我&#xff01;&#xff01;&#xff01;好啦&#xff0c;让我们进入Leetcode的世界吧 力扣 对于这道题目&a…

南卡OE Pro上线!开放式耳机新里程碑!前所未有的音质舒适双冠

当前耳机市场放眼望去几乎都是TWS的天下&#xff0c;但是大多数的蓝牙耳机都存在着以下痛点&#xff1a;长时间佩戴涨耳、出现听诊器效应、耳朵内部发痒以及与外界声音隔开缺乏安全性等等问题。 为此&#xff0c;国内智能声学品牌厂商NANK南卡针对用户的特点&#xff0c;于近日…

中小企业如何实施知识管理策略?

随着信息化建设的深入&#xff0c;IT不仅成为企业运营的基础平台&#xff0c;而且在ERP、CRM、OA等信息系统内沉淀了大量的知识&#xff0c;成为企业创新的源泉&#xff0c;大中企业信息化建设中知识管理越来越重要。 应该如何实现知识管理呢&#xff1f; 知识管理本身就属于企…

Flutter系列(七)ListView 图文列表详解

完整工程&#xff1a; Flutter系列&#xff08;四&#xff09;底部导航顶部导航图文列表完整代码_摸金青年v的博客-CSDN博客 详细解读: Flutter系列&#xff08;五&#xff09;底部导航详解_摸金青年v的博客-CSDN博客 Flutter系列&#xff08;六&#xff09;顶部导航详解_摸金青…

初学SSM时做的-IKUN图书管理系统

项目介绍 项目工具:IntelliJ IDEA 2021.2.2 图书后台管理系统&#xff0c;采用SpringBootMybatiusThymeleaf&#xff0c;页面使用Element框架&#xff0c;使用RESTful API风格编写接口。 数据库使用mysql 已实现功能 基本增删改查,联表查询 拦截器登录验证 项目技术栈 Spr…

4.15--设计模式之创建型之责任链模式(总复习版本)---脚踏实地,一步一个脚印

一、什么是责任链模式&#xff1a; 责任链模式属于行为型模式&#xff0c;是为请求创建了一个接收者对象的链&#xff0c;将链中每一个节点看作是一个对象&#xff0c;每个节点处理的请求均不同&#xff0c;且内部自动维护一个下一节点对象。 当一个请求从链式的首端发出时&a…

C++(Qt)软件调试---qmake编译优化和生成调试信息(9)

C(Qt)软件调试—qmake编译优化和生成调试信息&#xff08;9&#xff09; 文章目录C(Qt)软件调试---qmake编译优化和生成调试信息&#xff08;9&#xff09;1、前言1.1 编译器优化是什么1.2 调试信息是什么1.3 测试环境2、Qt编译模式说明3、比较Linux下Qt三种编译模式1.1 编译生…

DevOps系列文章 - K8S知识体系

环境搭建部分&#xff1a; 1、安装前的准备工作 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld# 查看hostname并修改hostname # 查看本机hostname hostnamectl set-hostname k8s-master # 把本机名设置成k8s-master hostnamectl status # 查看修改结…

Linux复习 / 文件系统QA梳理

文章目录前言Q&A文件的基本理解Q&#xff1a;谈谈你是怎么理解文件的&#xff1f;Q&#xff1a;什么是当前工作路径&#xff1f;Q&#xff1a;文件与操作系统有着怎样的关系&#xff1f;Q&#xff1a;为什么语言要封装系统接口&#xff1f;文件描述符Q&#xff1a;系统和进…

基于JSP的网上购物系统的设计与实现(论文+源码)_kaic

摘 要 近些年来&#xff0c;社会的生产力和科技水平在不断提高&#xff0c;互联网技术也在不断更新升级&#xff0c;网络在人们的日常生活中扮演着一个重要角色&#xff0c;它极大地方便了人们的生活。为了让人们实现不用出门就能逛街购物&#xff0c;网络购物逐渐兴起慢慢变得…

ES6(声名、解构)

参考文档&#xff1a; ES6 入门教程https://es6.ruanyifeng.com/ 注意&#xff1a;内容较多&#xff1a;只看引用部分的内容即可&#xff08;代码一眼过搭配理解&#xff09; 一、变量声明 1. let let声名的变量只在所处于的块级有效 let a 10; if (true) {let b 20;cons…