javascript模拟实现ajax加载框实例

以下是使用 JavaScript 模拟实现 ajax 加载框的完整攻略:

实现思路

  1. 创建一个遮罩层,并设置其 z-index 值为一个比较大的数字,遮罩整个页面;
  2. 在遮罩层中添加一个加载框元素,并使用 CSS 进行设置和样式定制;
  3. 使用 JavaScript 编写一个可以请求服务器数据的对象,以及在请求过程中显示遮罩层及加载框的方法;
  4. 在处理完请求后,隐藏遮罩层及加载框。

示例一

以下是一个简单的实例,展示了如何创建遮罩层及加载框,并使用 JavaScript 在请求过程中显示:

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>Ajax 加载框示例</title>
  <style type="text/css">
    /* 遮罩层样式 */
    .mask {
      position: fixed;
      top: 0;
      left: 0;
      z-index: 9999;
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.5);
      display: flex;
      justify-content: center;
      align-items: center;
    }

    /* 加载框样式 */
    .loading {
      display: inline-block;
      width: 50px;
      height: 50px;
      border: 5px solid #f3f3f3;
      border-top: 5px solid #3498db;
      border-radius: 50%;
      animation: spin 1s linear infinite;
    }

    /* 加载框旋转动画 */
    @keyframes spin {
      0% {
        transform: rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }
  </style>
</head>

<body>
  <button id="btn">请求数据</button>
  <div id="mask" class="mask" style="display: none;">
    <div class="loading"></div>
  </div>
  <script type="text/javascript">
    // 获取遮罩层和加载框元素
    var mask = document.getElementById("mask");
    var loading = document.querySelector(".loading");

    // 添加按钮点击事件
    document.getElementById("btn").onclick = function() {
      // 显示遮罩层及加载框
      mask.style.display = "flex";

      // 模拟请求过程,5 秒钟后隐藏遮罩层及加载框
      setTimeout(function() {
        mask.style.display = "none";
      }, 5000);
    };
  </script>
</body>

</html>

示例说明:

  1. 创建了一个灰色半透明的遮罩层,并在其中添加了一个圆形加载框;
  2. 使用 JavaScript 监听了一个按钮的点击事件;
  3. 点击按钮后,会显示遮罩层及加载框;
  4. 模拟了一个请求过程,5 秒钟后隐藏遮罩层及加载框。

示例二

针对实际业务中常见场景,我们还可以使用 JavaScript 封装一个可以请求服务器数据的对象,并在请求过程中显示遮罩层及加载框的方法。以下是该方法的示例代码:

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>Ajax 加载框示例</title>
  <style type="text/css">
    /* 遮罩层样式 */
    .mask {
      position: fixed;
      top: 0;
      left: 0;
      z-index: 9999;
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.5);
      display: flex;
      justify-content: center;
      align-items: center;
    }

    /* 加载框样式 */
    .loading {
      display: inline-block;
      width: 50px;
      height: 50px;
      border: 5px solid #f3f3f3;
      border-top: 5px solid #3498db;
      border-radius: 50%;
      animation: spin 1s linear infinite;
    }

    /* 加载框旋转动画 */
    @keyframes spin {
      0% {
        transform: rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }
  </style>
</head>

<body>
  <button id="btn">请求数据</button>
  <div id="mask" class="mask" style="display: none;">
    <div class="loading"></div>
  </div>
  <script type="text/javascript">
    // 封装服务器请求对象
    var request = {
      get: function(url, callback) {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
          if(xhr.readyState === 4 && xhr.status === 200) {
            callback(xhr.responseText);
          }
        };
        xhr.open("GET", url, true);
        xhr.send();
      },
      post: function(url, data, callback) {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
          if(xhr.readyState === 4 && xhr.status === 200) {
            callback(xhr.responseText);
          }
        };
        xhr.open("POST", url, true);
        xhr.send(data);
      }
    };

    // 获取遮罩层和加载框元素
    var mask = document.getElementById("mask");
    var loading = document.querySelector(".loading");

    // 封装一个方法,用于显示遮罩层及加载框
    function showLoading() {
      mask.style.display = "flex";
    }

    // 封装一个方法,用于隐藏遮罩层及加载框
    function hideLoading() {
      mask.style.display = "none";
    }

    // 添加按钮点击事件
    document.getElementById("btn").onclick = function() {
      // 显示遮罩层及加载框
      showLoading();

      // 发送 GET 请求,获取数据并显示
      request.get("https://jsonplaceholder.typicode.com/todos/1", function(data) {
        var result = JSON.parse(data);
        console.log(result);
        // 隐藏遮罩层及加载框
        hideLoading();
      });
  </script>
</body>

</html>

示例说明:

  1. 封装了一个可以请求服务器数据的对象 request,包含 get 和 post 两个方法,可以分别发送 GET 和 POST 请求;
  2. 封装了一个方法 showLoading,用于显示遮罩层及加载框,以及一个方法 hideLoading,用于隐藏遮罩层及加载框;
  3. 点击按钮后,会发送一个 GET 请求,获取数据;
  4. 在请求过程中,会显示遮罩层及加载框,并在请求结束后隐藏。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript模拟实现ajax加载框实例 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 让你一句话理解闭包(简单易懂)

    下面是关于如何让你一句话理解闭包的完整攻略: 一句话理解闭包 闭包是由函数和其相关的引用环境组合而成的封装体,它可以让函数访问到其词法作用域链上层的变量。 详细解释 首先,我们需要了解什么是词法作用域,以及JavaScript是如何处理作用域的。词法作用域就是在词法分析阶段确定的变量作用域,也就是说,变量的作用域是由函数定义时所在的位置决定的。 比如下面这段…

    JavaScript 2023年6月10日
    00
  • AJAX的使用方法详解

    关于”AJAX的使用方法详解”,我可以给你提供以下信息: AJAX的使用方法详解 基本概念 AJAX(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。它通过异步的方式与服务器进行数据交互,不需要刷新整个页面就可以实现部分内容的更新和任意的服务器通信。 AJAX的优点 可以部分更新网页,提高用户的操作体验; 可…

    JavaScript 2023年6月11日
    00
  • JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)

    下面是详细讲解: 1. JQuery form表单提交前验证单选框是否选中 步骤1:给表单元素设置id属性 在HTML表单中添加id属性,例如: <form id="myForm"> <!– 表单元素 –> </form> 步骤2:编写JQuery代码 使用JQuery库完成表单验证功能,代码如下:…

    JavaScript 2023年6月10日
    00
  • 用Move.js配合创建CSS3动画的入门指引

    使用Move.js创建CSS3动画 Move.js是一个小巧但功能强大的JavaScript库,可以用来帮助开发者轻松地创建CSS3动画效果。下面是使用Move.js创建CSS3动画的入门指引。 步骤1:引入Move.js库 使用Move.js前,首先需要引入Move.js库。可以直接下载Move.js库文件,然后在HTML中引入: <script s…

    JavaScript 2023年6月10日
    00
  • 纯javascript代码实现计算器功能(三种方法)

    当我们想在网页中添加一个计算器功能的时候,可以使用Javascript来实现。以下是三种使用Javascript实现计算器功能的方法: 方法一:利用eval()函数计算表达式 在HTML文档中添加以下代码: <div id="container"> <input type="text" id=&quo…

    JavaScript 2023年5月27日
    00
  • JavaScript类和继承 constructor属性

    JavaScript类和继承是面向对象编程的主要概念之一。构造函数是类的重要组成部分之一,通过构造函数我们可以创建新的实例,同时constructor属性则是描述类的属性之一。以下是完整攻略: 一、JS类的创建 JS 类的创建可以使用ES5和ES6进行定义。 在ES5 中,使用构造函数和原型算法来定义类,而在ES6 中,使用class和constructor…

    JavaScript 2023年5月27日
    00
  • JavaScript对象数组的排序处理方法

    JavaScript对象数组排序是一个经常用到的功能,下面是对于该主题的完整攻略: 什么是对象数组 对象数组就是包含多个对象并且以数组形式进行存储的数据来源。 比如我们可以创建如下形式的对象数组: const users = [ { name: ‘Jack’, age: 30 }, { name: ‘Tom’, age: 20 }, { name: ‘Luc…

    JavaScript 2023年5月27日
    00
  • JavaScript 实现模态对话框 源代码大全

    让我给你详细讲解一下“JavaScript 实现模态对话框 源代码大全”的完整攻略。 什么是模态对话框? 模态对话框是一种常用的弹窗提示框,它可以在网页中弹出提示框,并阻止用户对页面的其他操作,直到确定或取消该对话框。 实现模态对话框的方法 实现模态对话框需要使用JavaScript编写脚本。一般来说,实现模态对话框的方法有两种: 方法一:使用CSS实现 我…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部