javascript模拟实现ajax加载框实例

yizhihongxing

以下是使用 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框架编程第2/2页

    《JavaScript框架编程》第2/2页是一篇介绍如何编写JavaScript框架的教程。以下是该篇文章的完整攻略: 概述 JavaScript框架是为了使JavaScript代码更可重用、可扩展和易于维护而创造的。框架是为了解决开发过程中重复工作的问题,因此可以轻松地实现重复使用和扩展。编写框架可帮助开发人员组织自己的代码并使用固定的约定。 构建开发环境…

    JavaScript 2023年5月17日
    00
  • js实现弹窗效果

    实现弹窗效果是我们在Web开发中常常需要用到的功能之一,下面我将为您介绍如何使用JavaScript实现一个基本的弹窗效果。 一、HTML结构 首先需要在HTML中建立一个弹窗结构: <div class="popup-overlay"> <div class="popup"> <div …

    JavaScript 2023年6月11日
    00
  • JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML

    下面是JavaScript高级程序设计中的XML阅读笔记攻略: 什么是XML XML(eXtensible Markup Language),是一种标记语言,用于描述数据的结构,目的是通过简单、易读、人类可读的形式传递信息。 XML文档的结构由标签和内容组成,标签表示文档元素的开始和结束,每个标签可以有任意数量的属性,属性又由属性名和属性值组成。 如何使用X…

    JavaScript 2023年5月27日
    00
  • Ajax核心技术代码分享

    下面是关于“Ajax核心技术代码分享”的完整攻略,分为以下几个部分: 一、什么是Ajax? Ajax全称为Asynchronous JavaScript and XML,意为异步JavaScript和XML。它是一种用于创建快速动态网页的技术,通过在不刷新整个页面的情况下与服务器进行数据交换,实现局部页面的刷新和更新。它主要由HTML、CSS、JavaScr…

    JavaScript 2023年6月11日
    00
  • 理解JS事件循环

    理解JS事件循环,需要掌握以下几个知识点: JS运行时栈(Call Stack):存储函数调用的栈结构,遵循先进后出的原则。 Web API: 浏览器提供的API,如setTimeout, setInterval, fetch等,支持异步操作。 事件队列(Event Queue):存储Web API中的回调函数。 Event Loop:事件循环机制,它负责检…

    JavaScript 2023年6月10日
    00
  • javacript获取当前屏幕大小

    获取当前屏幕大小可以通过JavaScript的内置对象window来实现。使用window对象提供的属性和方法可以获取浏览器窗口的相关信息。 方法一:使用innerWidth和innerHeight属性获取屏幕大小 window.innerWidth属性返回浏览器窗口的视口宽度,即不包括滚动条的宽度。window.innerHeight属性返回浏览器窗口的视…

    JavaScript 2023年6月11日
    00
  • JavaScript reduce的基本用法详解

    JavaScript reduce的基本用法详解 reduce() 方法通过指定函数对数组元素进行累积计算,可将数组简化为单个值。它接收一个回调函数作为参数,该回调函数需要返回一个累积的结果。 基本语法 array.reduce(function(total, currentValue, currentIndex, arr), initialValue) 参…

    JavaScript 2023年5月18日
    00
  • javascript 内置对象及常见API详细介绍

    JavaScript 内置对象及常见 API 详细介绍 什么是 JavaScript 的内置对象? Javascript 的内置对象是指在 JavaScript 运行环境中自带的对象,它们包含了我们在编写 JavaScript 代码时需要调用的各种方法和属性,用它们可以方便地完成各种任务。常见的内置对象包括:Object、Array、Function、Dat…

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