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日

相关文章

  • js流动式效果显示当前系统时间

    实现JS流动式效果显示当前系统时间,可以通过以下步骤实现: 第一步:获取当前时间 JavaScript中可以通过Date()对象获取当前的系统时间。 var now = new Date(); var hour = now.getHours(); //小时 var minute = now.getMinutes(); //分钟 var second = no…

    JavaScript 2023年5月27日
    00
  • js中cookie的添加、取值、删除示例代码

    下面是JS中操作Cookie的完整攻略,包括添加、取值、删除示例代码: 添加Cookie 在JS中添加Cookie,我们可以利用document.cookie来设置Cookie值。下面是添加Cookie的示例代码: function setCookie(cname, cvalue, exdays) { let d = new Date(); d.setTim…

    JavaScript 2023年6月11日
    00
  • 实现在 Chrome 中执行 JavaScript 代码

    要在 Chrome 中执行 JavaScript 代码,有以下几种方法: 方法一:使用控制台 打开Chrome浏览器; 打开开发者工具(快捷键为F12或Ctrl+Shift+I); 在开发者工具中选择控制台选项卡; 在控制台中输入JavaScript代码,并按Enter键执行。 例如,在控制台中输入以下代码,即可在页面中弹出”Hello World!”的对话…

    JavaScript 2023年5月27日
    00
  • JavaScript中双向数据绑定详解

    JavaScript中双向数据绑定详解 双向数据绑定是指数据模型(Model)与视图(View)双方的数据自动进行同步,一方数据的改变会自动反映到另一方。在JavaScript中实现双向数据绑定可以减少代码量及提高开发效率。 实现方式 方式一:脏值检查 脏值检查指的是使用定时器或者计数器,定期去检查数据模型与视图是否同步,若不同步则进行更新。 此方式的实现较…

    JavaScript 2023年6月10日
    00
  • js中过滤特殊字符的正则表达式

    接下来我将详细讲解“js中过滤特殊字符的正则表达式”的攻略。 正则表达式 正则表达式是一种模式匹配的工具,它可以用来匹配并提取文本中的特定字符或字符串。在JavaScript中,可以使用正则表达式来过滤特殊字符。 过滤特殊字符 过滤特殊字符可以提高网站或应用程序的安全性和稳定性,防止恶意代码注入或造成页面渲染异常等问题。 在JavaScript中,可以使用正…

    JavaScript 2023年6月10日
    00
  • JSON与JS对象的区别与对比

    JSON和JavaScript对象都是在Web应用程序中处理数据的重要方式。虽然它们看上去很相似,但它们有着不同的特性和适用场景。下面是关于JSON与JS对象的区别与对比的详细说明。 什么是JS对象? JS对象是一种数据类型。它是所有JS基本类型之一,可以通过定义一个变量并使用构造函数Object()来创建对象。例如: var person = new Ob…

    JavaScript 2023年5月27日
    00
  • php与javascript正则匹配中文的方法分析

    关于“php与javascript正则匹配中文的方法分析”,我为您提供以下攻略。 1. 什么是正则表达式? 正则表达式是一种用来描述字符串模式的方法。它可以在文本中找到特定的字符、单词或模式,并根据需要对它们进行操作。正则表达式常用于搜索、替换和验证文本数据。 2. 中文匹配的基本语法 在正则表达式中,中文是通过Unicode码来表示的。要匹配中文,我们需要…

    JavaScript 2023年5月19日
    00
  • Javascript基础教程之数据类型 (字符串 String)

    Javascript基础教程之数据类型(字符串 String) 什么是字符串? 在JavaScript中,字符串是由任何字符组成的一组字符。字符串可以是字母、数字、标点符号等,甚至可以包含空格或其他特殊字符。字符串是JavaScript中最常用的数据类型之一。 JavaScript中的字符串是Unicode字符集中的16位编码单元序列。这意味着每个字符都是由…

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