Ajax第一天

AJAX

概念:AJAX 是瀏覽器與服務器進行數據通信的技術(把數據變活)

語法:

1.引入 axios.js:https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js

2.使用 axios 函數

? 傳入配置對象

? 再用 .then 回調函數接收結果,并做后續處理

URL

概念:URL 就是統一資源定位符,簡稱網址,用于訪問網絡上的資源

?

協議

http 協議:超文本傳輸協議,規定瀏覽器和服務器之間傳輸數據的格式

域名

域名:標記服務器在互聯網中方位

資源路徑

資源路徑:標記資源在服務器下的具體位置

URL 查詢參數

定義:瀏覽器提供給服務器的額外信息,讓服務器返回瀏覽器想要的數據

語法:http://xxxx.com/xxx/xxx?參數名1=值1&參數名2=值2

axios-查詢參數

? ? ? ? ? ? ? ? ? ? ? ? ?語法:使用 axios 提供的 params 選項

? ? ? ? ? ? ? ? ? ? ? ? ?注意:axios 在運行時把參數名和值,會拼接到 url?參數名=值

常用請求方法

請求方法:對服務器資源,要執行的操作

axios 請求配置

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?url:請求的 URL 網址

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?method:請求的方法,GET可以省略(不區分大小寫)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?data:提交數據

axios 錯誤處理

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 處理:用更直觀的方式,給普通用戶展示錯誤信息

? ? ? ? ? ? ? 語法:在 then 方法的后面,通過點語法調用 catch 方法,傳入回調函數并定義形參

HTTP協議-請求報文

請求報文:瀏覽器按照 HTTP 協議要求的格式,發送給服務器的內容

請求報文的組成部分有:

1.請求行:請求方法,URL,協議

2.請求頭:以鍵值對的格式攜帶的附加信息,比如:Content-Type

3.空行:分隔請求頭,空行之后的是發送給服務器的資源

4.請求體:發送的資源

HTTP協議-響應報文

響應報文:服務器按照 HTTP 協議要求的格式,返回給瀏覽器的內容

1.響應行(狀態行):協議、HTTP 響應狀態碼、狀態信息

2.響應頭:以鍵值對的格式攜帶的附加信息,比如:Content-Type

3.空行:分隔響應頭,空行之后的是服務器返回的資源

4.響應體:返回的資源

HTTP 響應狀態碼

HTTP 響應狀態碼:用來表明請求是否成功完成

比如:404(服務器找不到資源)

接口文檔

接口文檔:描述接口的文章(后端工程師)

接口:使用 AJAX 和服務器通訊時,使用的 URL,請求方法,以及參數

傳送門:https://apifox.com/apidoc/shared-1b0dd84f-faa8-435d-b355-5a8a329e34a8

form-serialize 插件

作用:快速收集表單元素的值

· 參數1:要獲取哪個表單的數據

表單元素設置name屬性,值會作為對象的屬性名,建議name屬性的值,最好和接口文檔參數名一致

· 參數2:配置對象

? ?hash 設置獲取數據結構

? ? ? ? ? - true:JS對象(推薦)一般請求體里提交給服務器

? ? ? ? ? - false: 查詢字符串

? ?empty 設置是否獲取空值

? ? ? ? ? - true: 獲取空值(推薦)數據結構和標簽結構一致

? ? ? ? ? - false:不獲取空值


圖書管理案例

CSS代碼

<!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>案例-圖書管理</title><!-- 字體圖標 --><link rel="stylesheet" href="https://at.alicdn.com/t/c/font_3736758_vxpb728fcyh.css"><!-- 引入bootstrap.css --><link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/css/bootstrap.min.css" rel="stylesheet"><!-- 核心樣式 --><link rel="stylesheet" href="./css/index.css">
</head><body><!-- 主體區域 --><div class="container"><!-- 頭部標題和添加按鈕 --><div class="top"><h3>圖書管理</h3><button type="button" class="btn btn-primary plus-btn" data-bs-toggle="modal" data-bs-target=".add-modal"> + 添加</button></div><!-- 數據列表 --><table class="table"><thead class="table-light"><tr><th style="width: 150px;">序號</th><th>書名</th><th>作者</th><th>出版社</th><th style="width: 180px;">操作</th></tr></thead><tbody class="list"><tr><td>1</td><td>JavaScript程序設計</td><td>馬特·弗里斯比</td><td>人民郵電出版社</td><td><span class="del">刪除</span><span class="edit">編輯</span></td></tr></tbody></table></div><!-- 新增-彈出框 --><div class="modal fade add-modal"><!-- 中間白色區域 --><div class="modal-dialog"><div class="modal-content"><div class="modal-header top"><span>添加圖書</span><button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="modal"></button></div><div class="modal-body form-wrap"><!-- 新增表單 --><form class="add-form"><div class="mb-3"><label for="bookname" class="form-label">書名</label><input type="text" class="form-control bookname" placeholder="請輸入書籍名稱" name="bookname"></div><div class="mb-3"><label for="author" class="form-label">作者</label><input type="text" class="form-control author" placeholder="請輸入作者名稱" name="author"></div><div class="mb-3"><label for="publisher" class="form-label">出版社</label><input type="text" class="form-control publisher" placeholder="請輸入出版社名稱" name="publisher"></div></form></div><div class="modal-footer btn-group"><button type="button" class="btn btn-primary" data-bs-dismiss="modal"> 取消 </button><button type="button" class="btn btn-primary add-btn"> 保存 </button></div></div></div></div><!-- 編輯-彈出框 --><div class="modal fade edit-modal"><!-- 中間白色區域 --><div class="modal-dialog"><div class="modal-content"><div class="modal-header top"><span>編輯圖書</span><button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="modal"></button></div><div class="modal-body form-wrap"><!-- 編輯表單 --><form class="edit-form"><input type="hidden" class="id" name="id"><div class="mb-3"><label for="bookname" class="form-label">書名</label><input type="text" class="form-control bookname" placeholder="請輸入書籍名稱" name="bookname"></div><div class="mb-3"><label for="author" class="form-label">作者</label><input type="text" class="form-control author" placeholder="請輸入作者名稱" name="author"></div><div class="mb-3"><label for="publisher" class="form-label">出版社</label><input type="text" class="form-control publisher" placeholder="請輸入出版社名稱" name="publisher"></div></form></div><div class="modal-footer btn-group"><button type="button" class="btn btn-primary" data-bs-dismiss="modal"> 取消 </button><button type="button" class="btn btn-primary edit-btn"> 修改 </button></div></div></div></div><script src="https://cdn.bootcdn.net/ajax/libs/axios/1.2.0/axios.min.js"></script><script src="./js/form-serialize.js"></script><script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/js/bootstrap.min.js"></script><!-- 核心邏輯 --><script src="./js/index.js"></script>
</body></html>

JS代碼

Bootstrap彈框

功能:不離開當前頁面,顯示單獨內容,供用戶操作

步驟:

1.引入 bootstrap.css 和 bootstrap.js

2.準備彈框標簽,確認結構

3.通過自定義屬性,控制彈框的顯示和隱藏

模塊一:渲染數據

const creator = '在逃的巨大嗎嘍'
//渲染函數
function getBooksList() {axios({url: 'http://hmajax.itheima.net/api/books',params: {//屬性和變量同名可以直接簡寫creator}}).then(result => {// console.log(result)const bookList = result.data.data// console.log(bookList)const htmlStr = bookList.map((item, index) => {return `<tr><td>${index + 1}</td><td>${item.bookname}</td><td>${item.author}</td><td>${item.publisher}</td><td data-id=${item.id}><span class="del">刪除</span><span class="edit">編輯</span></td></tr>`}).join('')document.querySelector('.list').innerHTML = htmlStr})
}
// 網頁加載運行,獲取并渲染列表一次
getBooksList()

模塊二:新增數據

//創建彈框對象
const addModalDom = document.querySelector('.add-modal')
const addModal = new bootstrap.Modal(addModalDom)
document.querySelector('.add-btn').addEventListener('click', () => {//收集表單數據const addForm = document.querySelector('.add-form')const bookObj = serialize(addForm, { hash: true, empty: true })// console.log(bookObj)// 提交到服務器axios({url: 'http://hmajax.itheima.net/api/books',method: 'post',data: {...bookObj,creator}}).then(result => {//重新渲染getBooksList()//重置表單addForm.reset()//隱藏彈框addModal.hide()})
})

模塊三:刪除數據

//事件委托綁定點擊事件
document.querySelector('.list').addEventListener('click', e => {if (e.target.classList.contains('del')) {const theId = e.target.parentNode.dataset.idaxios({url: `http://hmajax.itheima.net/api/books/${theId}`,method: 'delete'}).then(result => {getBooksList()})}
})

模塊四:編輯數據

const editDom = document.querySelector('.edit-modal')
const editModal = new bootstrap.Modal(editDom)
document.querySelector('.list').addEventListener('click', e => {if (e.target.classList.contains('edit')) {//獲取當前編輯圖書數據并且回顯到編輯表單中const theId = e.target.parentNode.dataset.ideditModal.show()axios({url: `http://hmajax.itheima.net/api/books/${theId}`}).then(result => {const bookObj = result.data.dataconst keys = Object.keys(bookObj)keys.forEach(key => {document.querySelector(`.edit-form .${key}`).value = bookObj[key]})})}
})document.querySelector('.edit-btn').addEventListener('click', e => {const editForm = document.querySelector('.edit-form')const { id, bookname, author, publisher } = serialize(editForm, { hash: true, empty: true })// 保存正在編輯的圖書id,隱藏起來:無需讓用戶修改// <input type="hidden" class="id" name="id" value="84783">axios({url: `http://hmajax.itheima.net/api/books/${id}`,method: 'put',data: {bookname,author,publisher,creator}}).then(ressult => {getBooksList()editModal.hide()})
})

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

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

相關文章

AI大模型各類概念掃盲

以下內容整理自AI&#xff0c;進行一個概念掃盲&#xff1a;Prompt&#xff08;提示詞&#xff09; Prompt是用戶提供給AI模型的指令或問題&#xff0c;用于引導模型生成特定輸出。良好的Prompt設計能顯著提升模型的任務理解能力和響應質量&#xff0c;例如通過結構化提示&…

Linux系統編程——網絡

一、TCP/UDP 1、osi模型 物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層&#xff08;下層為上層提供服務&#xff09; 2、TCP/IP模型&#xff08;TCP/IP協議棧&#xff09; 應用層&#xff1a; HTTP&#xff08;超文本傳輸協議&#xff09;、FTP&#xff08;文件…

taro+pinia+小程序存儲配置持久化

主要通過taro的getStorageSync,setStorageSync實現配置持久化 // https://pinia.esm.dev/introduction.html import { defineStore } from pinia; import { CreditCardDateUtils } from /untils/compute; import { getStorageSync, setStorageSync } from "tarojs/taro&qu…

抖音小游戲好做嗎?

從0到1&#xff0c;教你打造爆款抖音小游戲隨著移動互聯網的發展&#xff0c;抖音小游戲憑借便捷即玩、流量龐大等優勢&#xff0c;成為游戲開發者的熱門選擇。想知道如何開發出一款吸睛又好玩的抖音小游戲嗎&#xff1f;下面就為你詳細介紹開發流程。一、前期規劃明確游戲類型…

Spring Boot 3核心技術面試指南:從遷移升級到云原生實戰,9輪技術攻防(含架構解析)

面試官&#xff1a;cc程序員&#xff0c;聊聊Spring Boot 3的那些事兒&#xff1f; 場景背景 互聯網大廠云原生架構部面試官老王&#xff0c;與自稱"Spring Boot骨灰粉"的cc程序員展開技術對決。 面試過程 第一輪&#xff1a;遷移升級 面試官&#xff1a;Spring Boot…

技術演進中的開發沉思-42 MFC系列:Components 與 ActiveX Controls

點擊程序啟動時&#xff0c;是不是看過有加載的畫面。在VC開發時&#xff0c;可使用 VC 的 Component Gallery&#xff0c;找到 Splash screen 組件&#xff0c;當時覺得組件就是給程序員的暖手寶。一、Component GalleryComponent Gallery 在 VC 里的位置很特別 —— 它藏在 “…

抽象類、接口、枚舉

第八天&#xff08;堅持&#xff09;抽象類1.什么是抽象類&#xff0c;作用特點。抽象類是面向對象編程中一種特殊的類&#xff0c;它不能被實例化&#xff0c;主要用于作為其他類的基類&#xff08;父類&#xff09;。抽象類的主要作用是定義公共結構和行為規范&#xff0c;同…

在Ubuntu上使用QEMU仿真運行ARM匯編

ARM匯編一般無法在PC上直接運行&#xff0c;因為ARM和x86架構是不一樣的。但是很多時候用ARM開發板是很不方便的&#xff0c;所以能不能直接在PC上仿真運行ARM匯編來練習呢&#xff1f;當然可以&#xff0c;那就是&#xff1a;使用QEMU來仿真。這篇文章我們就來演示下如何在Ubu…

【趣味解讀】淘寶登錄的前后端交互機制:Cookie-Session 如何保障你的賬戶安全?

在現代Web應用中&#xff0c;前后端交互是核心功能之一&#xff0c;而用戶認證又是其中最關鍵的部分。本文將以淘寶登錄為例&#xff0c;詳細解析基于Cookie-Session的前后端交互流程&#xff0c;幫助開發者理解這一常見的安全認證機制。生動理解一下什么是cookie和seesion我們…

貪心算法(基礎算法)

1.引言 ok啊&#xff0c;拖更這么長時間也是沒有壓力&#xff08;doge&#xff09; 不說啥&#xff0c;直接進入正題。 2.概念 這個貪心算法呢&#xff0c;看名字就知道&#xff0c;不就是每個步驟都挑最好的嘛&#xff0c;有啥難的。 這么說的話......其實確實&#xff0c…

簡單的mcp 服務示例

參考&#xff1a;https://www.bilibili.com/video/BV1nyVDzaE1x 編寫自己的tools.py #### tools.py from pathlib import Path import osbase_dir Path("./test")def read_file(name: str) -> str:"""Return file content. If not exist, return …

DeepSeek-R1+豆包迭代一次完成中國象棋游戲

DeepSeeek- R1生成的棋盤符合中國象棋風&#xff0c;單獨豆包無法畫好象棋棋盤。提示詞&#xff1a;使用html實現中國象棋游戲&#xff0c;要求支持人機對弈。等等&#xff0c;你需要實現完整版本。代碼如下&#xff08;電腦走棋不對&#xff09;&#xff1a;<!DOCTYPE html…

阿里通義千問Qwen3深夜升級:架構革新+性能碾壓

&#xff08;以下借助 DeepSeek-R1 & Grok3 輔助整理&#xff09; 北京時間2025年7月22日凌晨&#xff0c;阿里云通義千問團隊發布了Qwen3旗艦模型的最新更新——Qwen3-235B-A22B-Instruct-2507-FP8。這一更新不僅在性能上實現了突破&#xff0c;還標志著開源大模型技術架…

pip關于緩存的用法

pip cache info查看 pip 緩存的大小&#xff0c;運行示例 Package index page cache location (pip v23.3): c:\users\xxx\appdata\local\pip\cache\http-v2 Package index page cache location (older pips): c:\users\xxx\appdata\local\pip\cache\http Package index page c…

嵌入式學習-(李宏毅)機器學習(2)-day29

十五個作業不同類型的Functions兩大類任務一個是Regression&#xff08;回歸&#xff09; 一個是 Classification&#xff08;分類&#xff09;一個是給出一個數值&#xff0c;一個是從類別中選擇一個還有一類任務 Structured Learning 機器要學會創造文件 機器學習預測頻道第…

【C++11】哈希表與無序容器:從概念到應用

文章目錄一、前言二、哈希表&#xff08;Hash Table&#xff09;1. 基本概念2. 哈希函數3. 沖突解決方法鏈地址法&#xff08;Separate Chaining&#xff09;開放尋址法&#xff08;Open Addressing&#xff09;4. 性能分析5. 動態擴容6. 應用場景7. 優缺點二. 無序容器的介紹1…

【智能大數據分析 | 實驗二】Spark實驗:部署Spark集群

【作者主頁】Francek Chen 【專欄介紹】???智能大數據分析??? 智能大數據分析是指利用先進的技術和算法對大規模數據進行深入分析和挖掘&#xff0c;以提取有價值的信息和洞察。它結合了大數據技術、人工智能&#xff08;AI&#xff09;、機器學習&#xff08;ML&#xf…

使用pymongo進行MongoDB的回收

在 PyMongo 中使用 compact 命令進行 MongoDB 碎片回收的完整操作指南如下&#xff1a; 一、核心執行方法 from pymongo import MongoClient import time# 1. 連接到 MongoDB 實例 client MongoClient("mongodb://username:passwordhost:27017/dbname?authSourceadmin&q…

Azure DevOps 使用服務主體配置自托管代理 (Self-hosted Agent) 配置指南

Azure DevOps 使用服務主體配置自托管代理配置指南1. 概述2. 在 Azure AD 中創建服務主體 (SP)3. 授予 Azure DevOps 權限3.1. 組織層級&#xff1a;用戶身份與訪問級別3.2. 組織層級&#xff1a;Agent pools管理員3.3. 在 Linux VM 上安裝和配置代理3.4. 啟動并設置為系統服務…

Java學習第六十四部分——Nginx

目錄 一、前言提要 二、核心特點 三、核心作用 四、架構優勢 五、應用場景 六、常用命令 七、性能對比——Nginx vs Apache 八、典型用戶 九、配置示例 十、Java應用需配合的配置 十一、性能優化策略 十二、常見問題排查 十三、文件結構配置 十四、總結歸納概述 …