javaweb -Ajax

Ajax的定義

Ajax(Asynchronous JavaScript and XML)是一種用于創建異步 Web 應用的技術,允許網頁在不重新加載整個頁面的情況下與服務器交換數據并更新部分內容。

Ajax的核心特點

異步通信:通過后臺與服務器交互,用戶操作不受干擾。

局部刷新:僅更新頁面特定部分,提升用戶體驗。

技術組合:依賴 JavaScript、XML(或 JSON)、HTML/CSS 和 XMLHttpRequest 對象。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

異步交互:可以在不重新加載整個頁面的情況下,與服務器交換數據并更新部分網頁的技術。

如上圖,輸入文字,瀏覽器根據文字給出對應的推薦內容,這就是一種異步交互。

同步請求的過程如下圖

異步請求的過程如下圖

Axios

使用原生的Ajax請求的代碼編寫起來還是比較繁瑣的,所以接下來我們學習一門更加簡單的發送Ajax請求的技術Axios 。Axios是對原生的AJAX進行封裝,簡化書寫。Axios官網是:https://www.axios-http.cn

一、引入Axios

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

也可以下載一個axios的js文件放在目錄中引用

入門程序

點擊按鈕時,使用Axios發送請求

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Ajax-Axios</title>
</head>
<body><input type="button" value="獲取數據GET" id="btnGet"><input type="button" value="操作數據POST" id="btnPost"><script src="js/axios.js"></script><script>//發送GET請求document.querySelector('#btnGet').addEventListener('click', () => {//axios發起異步請求axios({url:'https://mock.apifox.cn/m1/3083103-0-default/emps/list',method:'GET'}).then((result)=>{console.log(result.data);//成功回調函數}).catch((error)=>{console.log(error);//失敗回調函數`})})//發送POST請求document.querySelector('#btnPost').addEventListener('click', () => {axios({url:'https://mock.apifox.cn/m1/3083103-0-default/emps/update',method:'POST'}).then((result)=>{console.log(result.data);//成功回調函數}).catch((error)=>{console.log(error);//失敗回調函數`})})</script>
</body>
</html>

以下有個小程序可以凸顯出axios的異步請求的特點

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Ajax-Axios</title>
</head>
<body><input type="button" value="獲取數據GET" id="btnGet"><input type="button" value="操作數據POST" id="btnPost"><script src="js/axios.js"></script><script>//發送GET請求document.querySelector('#btnGet').addEventListener('click', () => {axios.get('https://mock.apifox.cn/m1/3083103-0-default/emps/list').then((result) => {console.log(result.data);})//異步輸出(異步請求,此處不需要等待服務器,因此更快)console.log('異步輸出');})//發送POST請求document.querySelector('#btnPost').addEventListener('click', () => {axios.post('https://mock.apifox.cn/m1/3083103-0-default/emps/update',id='1').then((result) => {console.log(result.data);}).catch((err) => {});})</script>
</body>
</html>

當按下獲取數據GET按鈕時,axios的get方法啟用,然后程序繼續往下走,往控制欄里輸出‘異步輸出’,然后get方法獲取到服務器端的數據,輸出對應數據。

Vue的生命周期

vue的生命周期:指的是vue對象從創建到銷毀的過程。

vue的生命周期包含8個階段:每觸發一個生命周期事件,會自動執行一個生命周期方法,這些生命周期方法也被稱為鉤子方法。其完整的生命周期如下圖所示:

狀態階段周期
beforeCreate創建前
created創建后
beforeMount掛載前
mounted掛載完成
beforeUpdate更新前
updated更新后
beforeDestroy銷毀前
destroyed

銷毀后

其中我們需要重點關注的是mounted,其他的我們了解即可。

mounted:掛載完成,Vue初始化成功,HTML頁面渲染成功。以后我們一般用于頁面初始化自動的ajax請求后臺數據

案例

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>Tlias智能學習輔助系統</title><style>/* 導航欄樣式 */.navbar {background-color: #b5b3b3; /* 灰色背景 */display: flex; /* flex彈性布局 */justify-content: space-between; /* 左右對齊 */padding: 10px; /* 內邊距 */align-items: center; /* 垂直居中 */}.navbar h1 {margin: 0; /* 移除默認的上下外邊距 */font-weight: bold; /* 加粗 */color: white;/* 設置字體為楷體 */font-family: "楷體";}.navbar a {color: white; /* 鏈接顏色為白色 */text-decoration: none; /* 移除下劃線 */}/* 搜索表單樣式 */.search-form {display: flex;flex-wrap: nowrap;align-items: center;gap: 10px; /* 控件之間的間距 */margin: 20px 0;}.search-form input[type="text"], .search-form select {padding: 5px; /* 輸入框內邊距 */width: 260px; /* 寬度 */}.search-form button {padding: 5px 15px; /* 按鈕內邊距 */}/* 表格樣式 */table {width: 100%;border-collapse: collapse;}th, td {border: 1px solid #ddd; /* 邊框 */padding: 8px; /* 單元格內邊距 */text-align: center; /* 左對齊 */}th {background-color: #f2f2f2;font-weight: bold;}.avatar {width: 30px;height: 30px;}/* 頁腳樣式 */.footer {background-color: #b5b3b3; /* 灰色背景 */color: white; /* 白色文字 */text-align: center; /* 居中文本 */padding: 10px 0; /* 上下內邊距 */margin-top: 30px;}#container {width: 80%; /* 寬度為80% */margin: 0 auto; /* 水平居中 */}</style>
</head>
<body><div id="container"><!-- 頂部導航欄 --><div class="navbar"><h1>Tlias智能學習輔助系統</h1><a href="#">退出登錄</a></div><!-- 搜索表單區域 --><form class="search-form" action="/search" method="post"><label for="name">姓名:</label><input type="text" id="name" name="name" v-model="searchForm.name" placeholder="請輸入姓名"><label for="gender">性別:</label><select id="gender" name="gender" v-model="searchForm.gender"><option value=""></option><option value="1">男</option><option value="2">女</option></select><label for="position">職位:</label><select id="position" name="position" v-model="searchForm.job"><option value=""></option><option value="1">班主任</option><option value="2">講師</option><option value="3">學工主管</option><option value="4">教研主管</option><option value="5">咨詢師</option></select><button type="button" v-on:click="search">查詢</button><button type="button" @click="clear">清空</button></form><!-- 表格展示區 --><table><!-- 表頭 --><thead><tr><th>序號</th><th>姓名</th><th>性別</th><th>頭像</th><th>職位</th><th>入職日期</th><th>最后操作時間</th><th>操作</th></tr></thead><!-- 表格主體內容 --><tbody><tr v-for="(item, index) in empList" :key="item.id"><td>{{index+1}}</td><td>{{item.name}}</td><td>{{item.gender == 1 ?'男':'女'}}</td><!-- 插值表達式不能出現在標簽內部,只能出現在標簽屬性中 --><td><img class="avatar" v-bind:src="item.image" :alt="item.name"></td><td><span v-if="item.job==1">班主任</span><span v-else-if="item.job==2">講師</span><span v-else-if="item.job==3">學工主管</span><span v-else-if="item.job==4">教研主管</span><span v-else-if="item.job==5">咨詢師</span><span v-else>其他</span></td><!-- <td><span v-show="item.job==1">班主任</span><span v-show="item.job==2">講師</span><span v-show="item.job==3">學工主管</span><span v-show="item.job==4">教研主管</span><span v-show="item.job==5">咨詢師</span></td> --><td>{{item.entrydate}}</td><td>{{item.updatetime}}</td><td class="action-buttons"><button type="button">編輯</button><button type="button">刪除</button></td></tr></tbody></table><!-- 頁腳版權區域 --><footer class="footer"><p>江蘇傳智播客教育科技股份有限公司</p><p>版權所有 Copyright 2006-2024 All Rights Reserved</p></footer></div><script src="js/axios.js"></script><script type="module">import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'createApp({data() {return {searchForm:{//封裝用戶輸入的查詢條件name:'',gender:'',job:''},empList:[]}},//定義方法methods: {async search(){//發送ajax請求獲取數據// axios.get(`https://web-server.itheima.net/emps/list?name=${this.searchForm.name}&gender=${this.searchForm.gender}&job=${this.searchForm.job}`).then((result) => {//     this.empList = result.data.data;// })// console.log('===========================');let result = await axios.get(`https://web-server.itheima.net/emps/list?name=${this.searchForm.name}&gender=${this.searchForm.gender}&job=${this.searchForm.job}`);this.empList = result.data.data;},clear(){this.searchForm={name:'',gender:'',job:''};this.search(); }},//鉤子函數mounted() {//頁面加載完成后,發送ajax請求獲取數據this.search();},}).mount('#container')</script></body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909846.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909846.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909846.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

11.OpenCV—聯合QT環境配置

1.QT環境變量配置 在Qt中配置OpenCV 3.4.6與Visual Studio 2017的步驟如下&#xff1a; 一、前期準備 安裝組件驗證 確認已安裝Qt的MSVC2017版本&#xff08;如Qt 5.12 MSVC2017 64-bit&#xff09; 檢查Visual Studio 2017的MSVC編譯器是否正常工作 OpenCV庫準備 從官網…

2025虛幻引擎一般用什么模型格式

2025虛幻引擎一般用什么模型格式 前言 積累了一些人物模型發現有的有骨骼&#xff0c;有的沒骨骼&#xff0c;有的要轉換格式&#xff0c;有的直接可以用&#xff0c;所以了解一下各種模型。 2025虛幻人物模型積累 格式轉換真麻煩。 2025.uexp、.uasset文件、.ubulk如何打…

電腦在使用過程中頻繁死機怎么辦

正興致勃勃地打游戲&#xff0c;或者趕著完成一份重要的工作文檔&#xff0c;電腦突然死機了&#xff0c;鼠標動不了&#xff0c;鍵盤也沒反應&#xff0c;只能干瞪眼干著急。電腦在使用過程中頻繁死機&#xff0c;真的太影響心情和效率了。今天咱就來好好聊聊&#xff0c;遇到…

【Java_EE】設計模式

設計模式&#xff1a;解決一些固定場景的固定套路&#xff0c;是一種代碼風格的知道指南。設計模式不止23種 1、單例設計模式 單例設計模式&#xff1a;確保一個類只有一個實例&#xff0c;提供全局訪問點 單例模式的實現方式&#xff1a; 1&#xff1a;餓漢模式 /*** 餓漢…

Nginx代理緩存靜態資源

問題描述 有兩臺服務器&#xff0c;一臺是外網的網關服務器&#xff0c;一臺是內網的資源服務器&#xff0c;但是兩臺服務器距離很遠&#xff08;跨省&#xff09;&#xff0c;頁面中依賴大量插件資源&#xff0c;加載耗時久&#xff0c;本章重點講解Nginx代理緩存靜態資源。 …

Blender 轉換為 STP:軟件操作與迪威模型網在線轉換全指南

在三維設計與工程制造領域&#xff0c;不同格式的文件承擔著各自的使命。Blender 作為一款功能強大且開源的三維建模軟件&#xff0c;被眾多設計師、藝術家以及學生廣泛使用&#xff0c;能夠創作出風格多樣、細節豐富的三維模型。而 STP 格式作為制造業通用的數據交換標準&…

WebFuture:PDF頁面去掉下載按鈕

問題描述&#xff1a;客戶要求pdf頁面不顯示下載按鈕 解決辦法&#xff1a;WF15.2版本開始會在內容管理配置增加“允許下載 PDF“開關&#xff1b;之前的版本需要替換文件來處理 1.備份網站下的base文件夾&#xff0c;路徑為/wwwroot/content/_common/base/&#xff0c;然后覆…

【JVM】- 類加載與字節碼結構2

編譯期處理&#xff08;語法糖&#xff09; java編譯器把.java源碼編譯成.class字節碼的過程&#xff0c;自動生成和轉換的一些代碼。 默認構造器 public class Candy01 { }編譯成class后的代碼 public class Candy1 {public Candy1(){super();} }自動拆裝箱&#xff08;jd…

WSL2 中安裝 cuDNN?? 的完整指南

以下是關于 ??cuDNN?? 的詳細介紹及在 ??WSL2 中安裝 cuDNN?? 的完整指南&#xff0c;結合權威資料整理而成&#xff1a; &#x1f4da; ??一、cuDNN 深度解析?? ??1. 定義與作用?? ??cuDNN??&#xff08;CUDA Deep Neural Network Library&#xff09;是…

Apache Doris FE 問題排查與故障分析全景指南

前言&#xff1a; FE&#xff08;Frontend&#xff09;是 Apache Doris 集群架構中的“大腦”&#xff0c;負責元數據管理、查詢解析和調度等關鍵任務。一旦 FE 出現問題&#xff0c;整個集群的穩定性和可用性將受到嚴重影響。因此&#xff0c;掌握 FE 故障定位與排查方法對于保…

RK AndroidFramework 內置應用可,卸載,恢復出廠設置恢復安裝

device/rockchip/rk356x/rk3568_r/preinstall_del/Android.mkdevice/rockchip/rk356x/rk3568_r/preinstall_del/Android.mk include $(call all-subdir-makefiles) 拿內置LoyversePos應用做例子 device/rockchip/rk356x/rk3568_r/preinstall_del/preinstall.mk PRODUCT_PACK…

一文了解Blob文件格式,前端必備技能之一

文章目錄 前言一、什么是Blob&#xff1f;二、Blob的基本特性三、Blob的構造函數四、常見使用場景1. 文件下載2. 圖片預覽3. 大文件分片上傳 四、Blob與其他API的關系1. File API2. FileReader3. URL.createObjectURL()4. Response 五、性能與內存管理六、實際案例&#xff1a;…

LLMs 系列實操科普(4)

六、deep research 這是 chatgpt 推出的功能&#xff0c;但我這里是免費用戶&#xff0c;一個月才有 5 次使用機會&#xff0c;而且使用的是輕量化模型版本&#xff0c;相對體驗上比較雞肋一些。 那這個深度思考研究是個什么東西呢&#xff1f; 根據 openai 對其的解釋是&…

若依框架前端調用后臺服務報跨域錯誤

背景&#xff1a;使用若依框架的前后端分離項目&#xff0c;前后端開發在同一個辦公室情況下前端調用后端服務提示如下報錯&#xff1a;Access to XMLHttpRequest at http://ip1:8089/online/layer/dataType from origin http://ip2:6090 has been blocked by CORS policy: Res…

PHP商城源碼:構建高效電商平臺的利器

一、PHP商城源碼的核心優勢 1. **開源免費&#xff0c;降低成本** PHP作為開源語言&#xff0c;擁有龐大的開發者社區&#xff0c;成熟的商城源碼&#xff08;如EcShop、OpenCart&#xff09;可免費獲取&#xff0c;大幅降低企業的技術投入成本。 2. **開發效率高** PHP語法…

【學習筆記】C++代碼規范整理

【學習筆記】C代碼規范整理 一、匿名空間namespace 匿名命名空間&#xff08;Anonymous Namespace&#xff09;是一種特殊的命名空間聲明方式&#xff0c;其作用是將聲明的成員限定在當前編譯單元&#xff08;源文件&#xff09;內可見&#xff0c;類似于使用 static 關鍵字修…

數學復習筆記 29 不定積分

前言 復習的時候時常復習一下以前復習的高數&#xff0c;溫故而知新&#xff0c;可以為師矣。現實生活中有非常多讓我難受的事情&#xff0c;賢者模式的時候也會對一些自己的行為嗤之以鼻&#xff0c;復習考研對其他三門科目都沒有學出來正反饋&#xff0c;只能從數學這兒找一…

微軟因安全漏洞禁用黑暗環境下的Windows Hello面部識別功能

面部識別技術在各種場景中的應用日益廣泛&#xff0c;但身份欺詐事件仍時有發生&#xff0c;這表明即使面部識別也并非萬無一失。在某些情況下&#xff0c;這些系統可能被攻擊者利用。 漏洞發現與應對措施 近期&#xff0c;微軟在Windows 10和11系統中禁用了黑暗環境下使用Wi…

產品經理課程(十五)實戰點評(3)

&#xff08;一&#xff09;復習 需求文檔是產品的說明書 需求文檔包含&#xff1a;修訂記錄、背景、主要流程、詳細功能邏輯、數據上報&#xff0c;發布策略 bug也是需求文檔的一部分 &#xff08;二&#xff09;案例講解 案例一&#xff1a; 一個版本里面的4-5個功能點就比…

大模型量化與剪枝

大模型量化&#xff0c;剪枝 量化有助于減少顯存使用并加速推理 GPTQ 等后訓練量化方法(Post Training Quantization)是一種在訓練后對預訓練模型進行量化的方法。 ### model model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct template: llama3### export export_di…