原生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.pswp.cn/web/64904.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64904.shtml
英文地址,請注明出處:http://en.pswp.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.組件具名…