原生js封装ajax请求以及css实现提示效果和禁止点击效果

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no"><title>本地模式网络切换</title><style>.pay-container{position: relative;overflow: auto;background-size: cover;}.cardBody{margin-top: 0;padding: 1rem .75rem;}.main{width: 100%;background: #FFFFFF;padding: .5rem 0 1rem;border-radius: 1rem;}.pay-container .cardBody .main .buyPackageBtn{width: 100%;height: 2.75rem;background: #467EFD;border-radius: 1.375rem;margin: 1rem auto 0;font-size: 1.125rem;font-family: PingFangSC;border: none;cursor: pointer;color: #FFFFFF;}.main .item{display: flex;align-items: center;justify-content: space-between;padding: 0 1rem;font-size: 1rem;font-family: PingFangSC;color: #333333;height: 3.5rem;border-bottom: 1px solid #F0F0F0;}#toast {visibility: hidden; /* 默认隐藏 */min-width: 250px; /* 设置最小宽度 */margin-left: -125px; /* 使toast居中 */background-color: rgba(51, 51, 51, 0.6); /* 背景颜色 */color: #fff; /* 文本颜色 */text-align: center; /* 文本居中 */border-radius: 5px; /* 圆角边框 */padding: 16px; /* 内边距 */position: fixed; /* 固定位置 */z-index: 1; /* 置于顶层 */left: 50%; /* 水平居中 */bottom: 50%; /* 距离底部30px */font-size: 17px; /* 字体大小 */opacity: 0; /* 透明度 */transition: opacity 0.5s; /* 过渡效果 */}/* 显示Toast时的样式 */#toast.show {visibility: visible;opacity: 1;}.disabled {pointer-events: none; /* 禁止点击 */opacity: 0.6; /* 可选,增加视觉效果表示不可点击 */}</style>
</head>
<body><div id="toast"></div><div class="pay-container" id="pay-container"><div class="cardBody"><div class="main"><div class="item"><span>名称:</span><span id="name"></span></div><div class="item"><span>年龄:</span><span id="age"></span></div><div class="item"><span>性别:</span><span id="sex"></span></div><div class="item"><span>电话:</span><span id="phone"></span></div><button type="button" class="buyPackageBtn" id="dxBtn" onclick="handleChangeNet('0')">姓名一</button><button type="button" class="buyPackageBtn" id="ltBtn" onclick="handleChangeNet('1')">姓名二</button></div></div></div><script type="text/javascript">// 显示Toast的函数function showToast(message, duration = 2000) {var toast = document.getElementById("toast");toast.innerHTML = message; // 设置Toast内容toast.className = "show"; // 添加显示类// 在指定时间后隐藏ToastsetTimeout(function() {toast.className = toast.className.replace("show", "");}, duration);}function queryStringify(obj) {let str = ''for (let k in obj) str += `${k}=${obj[k]}&`return str.slice(0, -1)}// 封装 ajaxfunction ajax(options) {let defaultoptions = {url: "",method: "GET",async: true,data: {},headers: {},success: function () { },error: function () { }}let { url, method, async, data, headers, success, error } = {...defaultoptions,...options}if (typeof data === 'object' && headers["content-type"]?.indexOf("json") > -1) {data = JSON.stringify(data)}else {data = queryStringify(data)}// // 如果是 get 请求, 并且有参数, 那么直接组装一下 url 信息if (/^get$/i.test(method) && data) url += '?' + data// // 4. 发送请求const xhr = new XMLHttpRequest()xhr.open(method, url, async)xhr.onload = function () {if (!/^2\d{2}$/.test(xhr.status)) {// console.log(error)error(`错误状态码:${xhr.status}`) //回调return}// 执行解析try {let result = JSON.parse(xhr.responseText)success(result)} catch (err) {error('解析失败 ! 因为后端返回的结果不是 json 格式字符串')}}// // 设置请求头内的信息for (let k in headers) xhr.setRequestHeader(k, headers[k])if (/^get$/i.test(method)) {xhr.send()} else {xhr.send(data)}}function handleChangeNet(num) {ajax({url:"xxx",method:"POST",data:{},headers:{"content-type":"application/json;charset=utf-8"},success:function(res){if(res.error_code=='0'){showToast("操作成功");getDeviceInfo()}else{showToast("操作失败");}},error:function(err){console.log("error",err)}})}function getDeviceInfo() {ajax({url:"***",method:"POST",data:{action:"101",},headers:{"content-type":"application/json;charset=utf-8"},success:function(res){if(res.error_code=='0'){var imeiEl = document.getElementById("imei");var nameEl = document.getElementById("wifiName");var passWordEl = document.getElementById("wifiPassword");var curNetEl = document.getElementById("curNet");var dxEl = document.getElementById("dxBtn");var ltEl = document.getElementById("ltBtn");imeiEl.innerHTML = res.device_info.imei;nameEl.innerHTML = res.device_info.ssid;passWordEl.innerHTML = res.device_info.password;if(res.device_info.operator=='中国电信'){curNetEl.innerHTML = '中国电信';ltEl.style.backgroundColor = '#467EFD';ltEl.classList.remove('disabled');dxEl.style.backgroundColor = '#ccc';dxEl.classList.add('disabled');}else{curNetEl.innerHTML = '中国联通';dxEl.style.backgroundColor = '#467EFD';dxEl.classList.remove('disabled');ltEl.style.backgroundColor = '#ccc';ltEl.classList.add('disabled');}}else{showToast("***");}},error:function(err){console.log("error",err)}})}getDeviceInfo()</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch的自动求导模块

文章目录 torch.autograd.backward()基本用法非标量张量的反向传播保留计算图指定输入张量高阶梯度计算 与 y.backward() 的区别torch.autograd.grad()基本用法非标量张量的梯度高阶梯度计算多输入、多输出的梯度计算未使用的输入张量保留计算图 与 backward() 的区别 torch.au…

Mac OS

本文来自智谱清言 ------ Mac OS&#xff08;现称为macOS&#xff09;是苹果公司开发和销售的操作系统&#xff0c;自1984年推出以来&#xff0c;它已经经历了多次重大的演变和发展。 起源&#xff1a;Mac OS 1.0的诞生 - 1984年&#xff0c;苹果发布了Macintosh计算机&#…

spring中使用@Validated,什么是JSR 303数据校验,spring boot中怎么使用数据校验

文章目录 一、JSR 303后台数据校验1.1 什么是 JSR303&#xff1f;1.2 为什么使用 JSR 303&#xff1f; 二、Spring Boot 中使用数据校验2.1 基本注解校验2.1.1 使用步骤2.1.2 举例Valid注解全局统一异常处理 2.2 分组校验2.2.1 使用步骤2.2.2 举例Validated注解Validated和Vali…

ubuntu常用快捷键和变量记录

alias b‘cd …/’ alias bb‘cd …/…/’ alias bbb‘cd …/…/…/’ alias bbbb‘cd …/…/…/…/’ alias bbbbb‘cd …/…/…/…/…/’ alias bbbbbb‘cd …/…/…/…/…/…/’ alias apkinfo‘aapt dump badging’ alias npp‘notepad-plus-plus’ export ANDROID_HOME/h…

AWS S3文件存储工具类

pom依赖 <!--aws-s3--> <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.12.95</version></dependency>S3Utils import cn.hutool.core.util.ZipUtil; import com.a…

【SOC 芯片设计 DFT 学习专栏 -- 测试向量生成 ATPG (Automatic Test Pattern Generation) 】

文章目录 OverviewATPG 的基本功能ATPG 的工作流程ATPG 应用场景示例示例 1&#xff1a;检测单个信号的 Stuck-at Fault示例 2&#xff1a;针对 Transition Fault 的 ATPG ATPG 工具与常用工具链ATPG 优化与挑战 Overview 本文主要介绍 DFT scan 中的 ATPG 功能。在 DFT (Desi…

2024 高通边缘智能创新应用大赛智能边缘计算赛道冠军方案解读

2024 高通边缘智能创新应用大赛聚焦不同细分领域的边缘智能创新应用落地&#xff0c;共设立三大热门领域赛道——工业智能质检赛道、智能边缘计算赛道和智能机器人赛道。本文为智能边缘计算赛道冠军项目《端侧大模型智能翻译机》的开发思路与成果分享。 赛题要求 聚焦边缘智能…

【Python运维】用Python和Ansible实现高效的自动化服务器配置管理

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着云计算和大规模数据中心的兴起,自动化配置管理已经成为现代IT运维中不可或缺的一部分。通过自动化,企业可以大幅提高效率,降低人为错…

微信小程序获取后端数据

在小程序中获取后端接口数据 通常可以使用 wx.request 方法&#xff0c;以下是一个基本示例&#xff1a; // pages/index/index.js Page({data: {// 用于存储后端返回的数据resultData: [] },onLoad() {this.fetchData();},fetchData() {wx.request({url: https://your-backe…

应用架构模式-总体思路

采用引导式设计方法&#xff1a;以企业级架构为指导&#xff0c;形成较为齐全的规范指引。在实践中总结重要设计形成决策要点&#xff0c;一个决策要点对应一个设计模式。自底向上总结采用该设计模式的必备条件&#xff0c;将之转化通过简单需求分析就能得到的业务特点&#xf…

【数据结构】双向循环链表的使用

双向循环链表的使用 1.双向循环链表节点设计2.初始化双向循环链表-->定义结构体变量 创建头节点&#xff08;1&#xff09;示例代码&#xff1a;&#xff08;2&#xff09;图示 3.双向循环链表节点头插&#xff08;1&#xff09;示例代码&#xff1a;&#xff08;2&#xff…

【Java设计模式-3】门面模式——简化复杂系统的魔法

在软件开发的世界里&#xff0c;我们常常会遇到复杂的系统&#xff0c;这些系统由多个子系统或模块组成&#xff0c;各个部分之间的交互错综复杂。如果直接让外部系统与这些复杂的子系统进行交互&#xff0c;不仅会让外部系统的代码变得复杂难懂&#xff0c;还会增加系统之间的…

Linux一些问题

修改YUM源 Centos7将yum源更换为国内源保姆级教程_centos使用中科大源-CSDN博客 直接安装包&#xff0c;走链接也行 Index of /7.9.2009/os/x86_64/Packages 直接复制里面的安装包链接&#xff0c;在命令行直接 yum install https://vault.centos.org/7.9.2009/os/x86_64/Pa…

微信小程序 覆盖组件cover-view

wxml 覆盖组件 <video src"../image/1.mp4" controls"{{false}}" event-model"bubble"> <cover-view class"controls"> <cover-view class"play" bind:tap"play"> <cover-image class"…

HTML——57. type和name属性

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>type和name属性</title></head><body><!--1.input元素是最常用的表单控件--><!--2.input元素不仅可以在form标签内使用也可以在form标签外使用-…

uniapp本地加载腾讯X5浏览器内核插件

概述 TbsX5webviewUTS插件封装腾讯x5webview离线内核加载模块&#xff0c;可以把uniapp的浏览器内核直接替换成Android X5 Webview(腾讯TBS)最新内核&#xff0c;提高交互体验和流畅度。 功能说明 下载SDK插件 1.集成x5内核后哪些页面会由x5内核渲染&#xff1f; 所有plus…

力扣hot100——二叉树

94. 二叉树的中序遍历 class Solution { public:vector<int> inorderTraversal(TreeNode* root) {vector<int> ans;stack<TreeNode*> stk;while (root || stk.size()) {while (root) {stk.push(root);root root->left;}auto cur stk.top();stk.pop();a…

设计模式 创建型 单例模式(Singleton Pattern)与 常见技术框架应用 解析

单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;旨在确保某个类在应用程序的生命周期内只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。这种设计模式在需要控制资源访问、避免频繁创建和销毁对象的场景中尤为有用。 一、核心…

您的公司需要小型语言模型

当专用模型超越通用模型时 “越大越好”——这个原则在人工智能领域根深蒂固。每个月都有更大的模型诞生&#xff0c;参数越来越多。各家公司甚至为此建设价值100亿美元的AI数据中心。但这是唯一的方向吗&#xff1f; 在NeurIPS 2024大会上&#xff0c;OpenAI联合创始人伊利亚…

uniapp-vue3(下)

关联链接&#xff1a;uniapp-vue3&#xff08;上&#xff09; 文章目录 七、咸虾米壁纸项目实战7.1.咸虾米壁纸项目概述7.2.项目初始化公共目录和设计稿尺寸测量工具7.3.banner海报swiper轮播器7.4.使用swiper的纵向轮播做公告区域7.5.每日推荐滑动scroll-view布局7.6.组件具名…