Ajax加载外部页面弹出层效果实现方法

当通过Ajax请求获取HTML页面时,我们希望将其以弹出层的形式展示出来,而不是让其跳转到新页面。这种效果可以使用一下几个步骤实现:

步骤一:添加页面元素

首先需要在页面中添加一些HTML元素,包括弹出层和触发弹出层的按钮。

<!-- 弹出层 -->
<div id="modal">
  <div class="modal-content">
    <span class="close">&times;</span>
    <div id="modal-body"></div>
  </div>
</div>

<!-- 触发弹出层的按钮 -->
<button id="modal-btn">打开弹出层</button>

步骤二:编写JavaScript代码

在JavaScript中,我们创建一个名为showModal的函数,用于向弹出层中添加HTML内容。

function showModal(url) {
  var modal = document.getElementById('modal');  // 获取弹出层
  var body = document.getElementById('modal-body');  // 获取弹出层中的内容部分

  // 发送Ajax请求获取HTML内容
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url);
  xhr.onload = function() {
    body.innerHTML = xhr.responseText;  // 将获取到的HTML内容添加到弹出层中
    modal.style.display = 'block';  // 显示弹出层
  };
  xhr.send();
}

// 当按钮被点击时触发
document.getElementById('modal-btn').addEventListener('click', function() {
  showModal('./example.html');
});

步骤三:样式调整

最后,需要添加一些CSS样式来调整弹出层的样式。

/* 弹出层 */
#modal {
  display: none;  /* 默认不显示 */
  position: fixed;  /* 固定定位 */
  z-index: 1;  /* 层级 */
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;  /* 在内容超过弹出层高度时添加滚动条 */
  background-color: rgba(0, 0, 0, 0.4);
}

/* 弹出层内容 */
.modal-content {
  background-color: white;
  margin: 10% auto;
  padding: 20px;
  border: 1px solid #888;
  width: 80%;
  max-width: 600px;
}

/* 关闭按钮 */
.close {
  color: #aaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: black;
  text-decoration: none;
  cursor: pointer;
}

示例说明一:通过Ajax获取服务器数据

在下面的示例中,我们将通过Ajax请求获取来自服务器的数据,并将其添加到弹出层中展示。

HTML代码:

<!-- 弹出层 -->
<div id="modal">
  <div class="modal-content">
    <span class="close">&times;</span>
    <div id="modal-body"></div>
  </div>
</div>

<!-- 触发弹出层的按钮 -->
<button id="modal-btn">打开弹出层</button>

JavaScript代码:

function showModal(url) {
  var modal = document.getElementById('modal');  // 获取弹出层
  var body = document.getElementById('modal-body');  // 获取弹出层中的内容部分

  // 发送Ajax请求获取服务器数据
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url);
  xhr.onload = function() {
    var data = JSON.parse(xhr.responseText);  // 将获取到的JSON字符串转换为JavaScript对象
    var html = '<ul>';  // 构建HTML列表
    data.forEach(function(item) {
      html += '<li>' + item.title + '</li>';
    });
    html += '</ul>';
    body.innerHTML = html;  // 将构建的HTML添加到弹出层中
    modal.style.display = 'block';  // 显示弹出层
  };
  xhr.send();
}

// 当按钮被点击时触发
document.getElementById('modal-btn').addEventListener('click', function() {
  showModal('./example.json');
});

JSON数据:

[
  {
    "title": "第一条数据"
  },
  {
    "title": "第二条数据"
  },
  {
    "title": "第三条数据"
  }
]

示例说明二:通过Ajax获取外部HTML页面

在下面的示例中,我们将通过Ajax请求获取外部HTML页面,并将其添加到弹出层中展示。

HTML代码:

<!-- 弹出层 -->
<div id="modal">
  <div class="modal-content">
    <span class="close">&times;</span>
    <div id="modal-body"></div>
  </div>
</div>

<!-- 触发弹出层的按钮 -->
<button id="modal-btn">打开弹出层</button>

JavaScript代码:

function showModal(url) {
  var modal = document.getElementById('modal');  // 获取弹出层
  var body = document.getElementById('modal-body');  // 获取弹出层中的内容部分

  // 发送Ajax请求获取HTML页面
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url);
  xhr.onload = function() {
    body.innerHTML = xhr.responseText;  // 将获取到的HTML页面添加到弹出层中
    modal.style.display = 'block';  // 显示弹出层
  };
  xhr.send();
}

// 当按钮被点击时触发
document.getElementById('modal-btn').addEventListener('click', function() {
  showModal('./example.html');
});

example.html:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>外部HTML页面</title>
</head>
<body>
  <h1>这是外部HTML页面</h1>
  <p>用于演示Ajax加载外部页面弹出层效果。</p>
</body>
</html>

CSS代码:

/* 弹出层 */
#modal {
  display: none;  /* 默认不显示 */
  position: fixed;  /* 固定定位 */
  z-index: 1;  /* 层级 */
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;  /* 在内容超过弹出层高度时添加滚动条 */
  background-color: rgba(0, 0, 0, 0.4);
}

/* 弹出层内容 */
.modal-content {
  background-color: white;
  margin: 10% auto;
  padding: 20px;
  border: 1px solid #888;
  width: 80%;
  max-width: 600px;
}

/* 关闭按钮 */
.close {
  color: #aaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: black;
  text-decoration: none;
  cursor: pointer;
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Ajax加载外部页面弹出层效果实现方法 - Python技术站

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

相关文章

  • 百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome

    首先,需要说明一下“百度Popup.js弹出框进化版”是什么,它是一个利用JavaScript编写的弹出框小框架,可以在网站开发中方便地实现弹出框的功能。该框架支持拖拽、缩放、拖拽改变大小等功能,并兼容多种主流浏览器。 以下是使用“百度Popup.js弹出框进化版”实现弹出框功能的攻略: 准备工作 首先需要将“百度Popup.js弹出框进化版”下载到本地。 …

    other 2023年6月26日
    00
  • Media Encoder如何向文件名附加预设名称?Media Encoder向文件名附加预设名称更改

    Media Encoder是Adobe系列软件之一,可以用于转码、压缩视频、音频等媒体文件。Media Encoder可以设置预设(Presets),让你在转码时省去一些繁琐的设置步骤。其中一种设置是在输出时向文件名附加预设名称,方便管理和识别。 具体步骤如下: 打开Media Encoder,在左侧选择“预设”(Presets)选项卡。 选择一个你喜欢的预…

    other 2023年6月26日
    00
  • XSS Challenges(1-12关)

    XSS(跨站脚本攻击)是一种常见的Web安全漏洞,攻击者可以通过注入恶意脚本来窃取用户的敏感信息。XSS挑战是一种测试和提高Web安全技能的方法,本文将详细讲解XSS挑战的1-12关,包括攻略和示例说明。 关卡1:Hello, world! 这是一个简单的XSS挑战,要求我们在输入框中输入一个JavaScript脚本,然后在页面上显示“Hello, worl…

    other 2023年5月5日
    00
  • 详解Windows Server 2008十大最新特性

    这里是关于“详解Windows Server 2008十大最新特性”的完整攻略: 详解Windows Server 2008十大最新特性 1. Server Core Windows Server 2008的Server Core是一种特殊的安装配置,只包含安装和运行所需的最小系统组件。这个特性有很多优点,例如安全性更高,攻击面更小等。通过Server Co…

    other 2023年6月27日
    00
  • 关于Dev-C++的安装以及基本使用方法图文入门

    这里是关于Dev-C++的安装以及基本使用方法的完整攻略。 Dev-C++ 安装 Dev-C++是一个免费的集成开发环境(IDE),用于编写和调试C/C++代码。在开始使用之前,需要先进行安装。具体步骤如下: 在 Dev-C++官网 下载最新版的 Dev-C++ 安装包。 双击安装包文件 devcpp-x.x.x.xxx_setup.exe 打开安装向导。 …

    other 2023年6月26日
    00
  • uni-appios的threejs本地obj、mtl文件的读取

    简介 在uni-app中,可以使用three.js库来创建3D图形。如果要在iOS设备上使用three.js库,可以使用本地obj和mtl文件来加载3D模型。本攻略将详细讲解如何在uni-app中使用three库加载本地obj和mtl文件。 步骤 下面是在uni-app中three.js库加载本地obj和mtl文件的步骤: 在uni-app项目中安装thre…

    other 2023年5月8日
    00
  • Android多级树形列表控件

    首先我们来介绍一下 Android 多级树形列表控件的概念。多级树形列表控件是用来展示树形结构数据的控件,通常用于大量分类信息的展示,它能够很好地帮助用户浏览和理解不同层级之间的数据关系。 在 Android 中实现多级树形列表控件有很多种方法,但是我们在这里主要介绍两种,一种是通过自定义适配器实现多级树形列表控件,另一种是使用已有的第三方库。下面分别进行说…

    other 2023年6月26日
    00
  • java简单读取properties配置文件的方法示例

    下面是关于“java简单读取properties配置文件的方法示例”的完整攻略: 什么是properties文件 在Java开发中,properties文件是一种常用的配置文件,通常用于存储一些应用程序运行时需要用到的配置信息,比如数据库连接信息、日志输出等等。properties文件是以键值对的形式存储数据,其中键和值之间以等号“=”分隔,每一行表示一个键…

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