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实现一个网页加载进度loading

    下面是关于Javascript实现一个网页加载进度loading的完整攻略。 步骤一:添加HTML结构 首先,在网页的HTML结构中添加loading元素,用于显示进度条和加载状态。可以采用下面代码模板: <div id="loading"> <div id="progress"></di…

    JavaScript 2023年6月11日
    00
  • JavaScript实现公历转农历功能示例

    为了实现将公历转为农历的功能,我们可以使用 JavaScript 。下面是一些实现方法: 获取农历年份其中天干地支年份和生肖的方法 根据中国传统农历的节气来把年份换算成对应的天干地支年份和生肖。下面是一种计算天干地支的方法: // 获取生肖年份的方法 function zodiacYear(solarYear) { var animals = [ &quot…

    JavaScript 2023年5月27日
    00
  • JS动画定时器知识总结

    标题:JS动画定时器知识总结 正文: 1. 前言 在前端开发中,动画交互是一个很重要的部分。JS定时器作为动画交互的实现方式之一,在使用过程中存在着一些需要注意的点。本文将针对JS动画定时器进行一个总结,希望能对读者在动画交互的应用中提供一些帮助。 2. 定时器概念 在JavaScript中,有两种定时器:setInterval()和setTimeout()…

    JavaScript 2023年6月10日
    00
  • js刷新页面方法大全

    下面是详细讲解 “JS 刷新页面方法大全” 的攻略: 一、使用 location.reload() 方法 location.reload() 方法可以重新加载当前文档(即刷新页面)。在不传递任何参数的情况下,它将以最新的内容重新加载当前URL。 // 简洁版 location.reload(); // 带有强制刷新参数的完整版 location.reload…

    JavaScript 2023年6月11日
    00
  • JavaScript常见手写题超全汇总

    JavaScript常见手写题超全汇总 1. 前言 在面试以及实际工作中,常常需要手写一些核心的JavaScript代码。这些手写题目可能比较简单、或者非常复杂,但是它们都对JavaScript基础功夫有一个更加深刻的理解。 在本篇文章中,我们将会汇总一些常见的JavaScript手写题,包括但不限于:数组去重、深拷贝、Promise实现、函数柯里化等等。 …

    JavaScript 2023年5月18日
    00
  • 浅谈ajax在jquery中的请求和servlet中的响应

    AJAX在jQuery中的请求 1.1 基本概念 AJAX是浏览器与服务器之间异步传输数据的一种技术,可以在不刷新整个页面的情况下更新页面的部分内容。jQuery是一个JavaScript库,常用于进行AJAX请求。 1.2 使用方法 使用jQuery发送AJAX请求的基本语法如下: $.ajax({ type: "POST", // G…

    JavaScript 2023年6月11日
    00
  • js实现图片实时时钟

    实现图片实时时钟的完整攻略如下。 一、准备工作 引入jQuery库 “` 2. 在HTML页面中添加img标签,并设置id和src属性 3. 创建一个空的div容器,用于存放数字图片 4. 在css文件中设置图片的宽度和高度 #clock { width: 150px; height: 150px; } “` 二、代码实现 获取当前时间 var date…

    JavaScript 2023年5月27日
    00
  • JS中的六种继承方式以及优缺点总结

    下面是详细讲解“JS中的六种继承方式以及优缺点总结”的完整攻略。 JS中的六种继承方式 在JS中,继承是OO的一个重要的概念,通过继承可以实现代码的重用和封装性,JS中有六种继承方式,分别是: 1.原型链继承 原型链继承是JS中最常见的一种继承方式,它是利用原型对象来实现的,将子类的原型指向父类的实例,从而实现子类继承父类的方法和属性。 function P…

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