AJAX 學習筆記(Day1)

「寫在前面」

本文為黑馬程序員 AJAX 教程的學習筆記。本著自己學習、分享他人的態度,分享學習筆記,希望能對大家有所幫助。


目錄

  • 0 課程介紹
  • 1 AJAX 入門
    • 1.1 AJAX 概念和 axios 使用
    • 1.2 認識 URL
    • 1.3 URL 查詢參數
    • 1.4 常用請求方法和數據提交
    • 1.5 HTTP協議-報文
    • 1.6 接口文檔
    • 1.7 案例 - 用戶登錄
    • 1.8 form-serialize 插件

0 課程介紹

P1:https://www.bilibili.com/video/BV1MN411y7pw?p=1

alt

1 AJAX 入門

1.1 AJAX 概念和 axios 使用

P2:https://www.bilibili.com/video/BV1MN411y7pw?p=2

什么是 AJAX ?

AJAX 是瀏覽器與服務器進行數據通信的技術

比如:瀏覽器網頁中,使用 AJAX技術(XHR對象)發起獲取省份列表數據的請求,服務器代碼響應準備好的省份列表數據給前端,前端拿到數據數組以后,展示到網頁

alt

怎么用 AJAX ?

  1. 先使用 axios 庫,與服務器進行 數據通信
  • 因為 axios 庫語法簡單,讓我們有更多精力關注在與服務器通信上,而且后續 Vue,React 學習中,也使用 axios 庫與服務器通信
  1. 再學習 XMLHttpRequest 對象的使用,了解 AJAX 底層原理

axios 使用

語法:

  1. 引入 axios.js:https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js
  2. 使用 axios 函數
  • 傳入 配置對象
  • 再用 .then 回調函數接收結果,并做后續處理
axios({
url: '目標資源地址'
}).then((result) => {
//對服務器返回的數據做后續處理
})

案例:

alt
<!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>
<!--
axios庫地址:https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js
省份數據地址:http://hmajax.itheima.net/api/province

目標: 使用axios庫, 獲取省份列表數據, 展示到頁面上
1. 引入axios庫
-->

<p class="my-p"></p>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
// 2. 使用axios函數
axios({
url: 'http://hmajax.itheima.net/api/province'
}).then(result => {
console.log(result)
// 好習慣:多打印,確認屬性名
console.log(result.data.list)
console.log(result.data.list.join('<br>'))
// 把準備好省份列表,插入到頁面
document.querySelector('.my-p').innerHTML = result.data.list.join('<br>')
})
</script>
</body>

</html>

1.2 認識 URL

P3:https://www.bilibili.com/video/BV1MN411y7pw?p=3

什么是 URL ?

定義:

alt

例如:

alt

URL 的組成

alt

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

alt

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

alt

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

alt

1.3 URL 查詢參數

P4:https://www.bilibili.com/video/BV1MN411y7pw?p=4

什么是查詢參數 ?

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

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

舉例:查詢河北省下屬的城市列表,需要先把河北省傳遞給服務器

alt

axios 如何攜帶查詢參數?

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

axios({
url: '目標資源地址',
params: {
參數名: 值
}
}).then(result => {
// 對服務器返回的數據做后續處理
})

案例:獲取“河北省”下屬的城市列表,展示到頁面

axios({
url: 'http://hmajax.itheima.net/api/city',
params: {
pname: '河北省'
}
}).then(result => {
console.log(result.data.list)
})

案例:地區查詢

P5:https://www.bilibili.com/video/BV1MN411y7pw?p=5

alt

1.4 常用請求方法和數據提交

P6:https://www.bilibili.com/video/BV1MN411y7pw?p=6

常用請求方法

請求方法:是一些固定單詞的英文,例如:GET,POST,PUT,DELETE,PATCH(這些都是http協議規定的),每個單詞對應一種對服務器資源要執行的操作

alt

前面我們獲取數據其實用的就是 GET 請求方法,但是 axios 內部設置了默認請求方法就是 GET,我們就沒有寫

axios 請求配置

  • url:請求的 URL 網址
  • method:請求的方法, GET可以省略(不區分大小寫)
  • data:提交數據
axios({
url: '目標資源地址',
method: '請求方法',
data: {
參數名: 值
}
}).then(result => {
// 對服務器返回的數據做后續處理
})

案例:注冊賬號,提交用戶名和密碼到服務器保存

axios({
url: 'http://hmajax.itheima.net/api/register',
method: 'POST',
data: {
username: 'itheima007',
password: '7654321'
}
})

axios 錯誤處理

P7:https://www.bilibili.com/video/BV1MN411y7pw?p=7

如果注冊相同的用戶名,則會遇到注冊失敗的請求,也就是 axios 請求響應失敗了,你會在控制臺看到如圖的錯誤:

alt

因為,普通用戶不會去控制臺里看錯誤信息,我們要編寫代碼拿到錯誤并展示給用戶在頁面上

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

axios({
// ...請求選項
}).then(result => {
// 處理成功數據
}).catch(error => {
// 處理失敗錯誤
})

案例:重復注冊時通過彈框提示用戶錯誤原因

axios({
url: 'http://hmajax.itheima.net/api/register',
method: 'post',
data: {
username: 'itheima007',
password: '7654321'
}
}).then(result => {
// 成功
console.log(result)
}).catch(error => {
// 失敗
// 處理錯誤信息
console.log(error)
console.log(error.response.data.message)
alert(error.response.data.message)
})

1.5 HTTP協議-報文

P8:https://www.bilibili.com/video/BV1MN411y7pw?p=8

HTTP 協議:規定了瀏覽器發送及服務器返回內容的格式

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

alt

請求報文的組成部分有:

  1. 請求行:請求方法,URL,協議
  2. 請求頭:以鍵值對的格式攜帶的附加信息,比如:Content-Type
  3. 空行:分隔請求頭,空行之后的是發送給服務器的資源
  4. 請求體:發送的資源

通過 Chrome 的網絡面板查看請求報文:

alt

請求報文-錯誤排查

P9:https://www.bilibili.com/video/BV1MN411y7pw?p=9

alt

HTTP 協議-響應報文

P10:https://www.bilibili.com/video/BV1MN411y7pw?p=10

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

alt

響應報文的組成:

  1. 響應行(狀態行):協議、HTTP 響應狀態碼、狀態信息
  2. 響應頭:以鍵值對的格式攜帶的附加信息,比如:Content-Type
  3. 空行:分隔響應頭,空行之后的是服務器返回的資源
  4. 響應體:返回的資源

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

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

alt

通過 Chrome 的網絡面板查看響應報文:

alt

1.6 接口文檔

P11:https://www.bilibili.com/video/BV1MN411y7pw?p=11

接口文檔:描述接口的文章(一般是后端工程師,編寫和提供)

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

AJAX階段接口文檔: https://apifox.com/apidoc/shared-1b0dd84f-faa8-435d-b355-5a8a329e34a8

alt

1.7 案例 - 用戶登錄

P12:https://www.bilibili.com/video/BV1MN411y7pw?p=12

P13:https://www.bilibili.com/video/BV1MN411y7pw?p=13

alt

1.8 form-serialize 插件

P14:https://www.bilibili.com/video/BV1MN411y7pw?p=14

P15:https://www.bilibili.com/video/BV1MN411y7pw?p=15

我們前面收集表單元素的值,是一個個標簽獲取的,如果一套表單里有很多很多表單元素,如何一次性快速收集出來呢?使用 form-serialize 插件提供的 serialize 函數就可以辦到。

form-serialize 插件語法:

  1. 引入 form-serialize 插件到自己網頁中
  2. 使用 serialize 函數
  • 參數1:要獲取的 form 表單標簽對象(要求表單元素需要有 name 屬性-用來作為收集的數據中屬性名)
  • 參數2:配置對象
    • hash:
      • true - 收集出來的是一個 JS 對象結構
      • false - 收集出來的是一個查詢字符串格式
    • empty:
      • true - 收集空值
      • false - 不收集空值
const form = document.querySelector('.example-form')
const data = serialize(form, { hash: true, empty: true })

「結束」
alt

本文由 mdnice 多平臺發布

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

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

相關文章

H264的打包,nal,es,pes,pts,dts,ps,ts

編碼層次 視頻編碼層&#xff1a;預測、變換、量化、熵編碼等操作slice層&#xff1a;將視頻幀分割成若干個編碼單元&#xff0c;包含一定數量的宏塊&#xff0c;提高編解碼的并行性和容錯性。NAL層&#xff1a;提升對網絡傳輸和數據存儲的親和性 視頻編碼層 基準-Baseline …

云計算與大數據課程筆記(一)云計算背景與介紹

如何實現一個簡易搜索引擎&#xff1f; 實現一個簡易的搜索引擎可以分為幾個基本步驟&#xff1a;數據收集&#xff08;爬蟲&#xff09;、數據處理&#xff08;索引&#xff09;、查詢處理和結果呈現。下面是一個概括的實現流程&#xff1a; 1. 數據收集&#xff08;爬蟲&am…

Java實戰:Spring Boot項目中如何利用Redis實現用戶IP接口限流

引言 在高并發的Web應用中&#xff0c;接口限流是一項至關重要的技術手段&#xff0c;它有助于保護系統資源&#xff0c;防止因瞬間流量高峰導致服務崩潰。本文將深入探討如何在Spring Boot項目中借助Redis實現用戶IP級別的接口限流策略&#xff0c;通過具體的代碼示例&#x…

大數據概述

學習大數據有什么用&#xff1f; 2010年&#xff1a;大數據技術體系開始在國內火熱 2015年&#xff1a;國務院印發《促進大數據發展行動綱要》 2016年&#xff1a;發改委發布關于組織實施促進大數據發展重大工程的通知 2017年&#xff1a;工信部印發大數據產業規劃(2016-20…

Linux運維_Bash腳本_構建安裝Meson-1.0.1和Ninja-1.11.1

Linux運維_Bash腳本_構建安裝Meson-1.0.1和Ninja-1.11.1 Bash (Bourne Again Shell) 是一個解釋器&#xff0c;負責處理 Unix 系統命令行上的命令。它是由 Brian Fox 編寫的免費軟件&#xff0c;并于 1989 年發布的免費軟件&#xff0c;作為 Sh (Bourne Shell) 的替代品。 您…

Nginx高級技巧:實現負載均衡和反向代理

文章目錄 Nginx概述Nginx作用正向代理反向代理負載均衡動靜分離 Nginx的安裝 -->Docker3.1 安裝Nginx3.2 Nginx的配置文件3.3 修改docker-compose文件 Nginx源碼安裝nginx常用命令nginx配置文件配置文件位置配置文件結構詳情 Nginx的反向代理【重點】基于Nginx實現反向代理4…

C語言冒泡排序(高級版)

目錄: 冒泡排序的原理 主函數 "冒泡排序函數" 比較函數 交換函數 最終輸出 完整代碼 冒泡排序的原理: 冒泡排序的原理是&#xff1a;從左到右&#xff0c;相鄰元素進行比較。每次比較一輪&#xff0c;就會找到序列中最大的一個或最小的一個。這個數就會從序列的最右…

Windows上構建一個和Linux類似的Terminal

preview 目的是在Windows上構建一個和Linux類似的Terminal&#xff0c;讓Windows煉丹和Linux一樣舒適&#xff0c;同是讓Terminal取代Xshell完成遠程鏈接。 預覽如下圖 在Linux下我們使用zsh和oh-my-zsh結合&#xff0c;Windows下我們使用powershell7和oh-my-posh結合。 前提…

Vue 前端開發 v-for和v-if兩個指令不能混合使用

原由&#xff1a; 在進行項目開發的時候因為在一個標簽上同時使用了v-for和v-if兩個指令導致的報錯。 提示錯誤&#xff1a;The undefined variable inside v-for directive should be replaced with a computed property that returns filtered array instead. You should no…

nginx------------緩存功能 ip透傳 負載均衡 (六)

一、http 協議反向代理 &#xff08;一&#xff09;反向代理示例:緩存功能 緩存功能可以加速訪問&#xff0c;如果沒有緩存關閉后端服務器后&#xff0c;圖片將無法訪問&#xff0c;緩存功能默認關閉&#xff0c;需要開啟。 ? proxy_cache zone_name | off; 默認off #指明調…

基于Springboot純凈水配送和商城系統設計與實現 開題報告參考

博主介紹&#xff1a;黃菊華老師《Vue.js入門與商城開發實戰》《微信小程序商城開發》圖書作者&#xff0c;CSDN博客專家&#xff0c;在線教育專家&#xff0c;CSDN鉆石講師&#xff1b;專注大學生畢業設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程&#xff…

2023 版王道單科書勘誤匯總(3.30)

注:因2023版對題目編號做了優化“歷年真題全部放最后、且按年份排序”&#xff0c;以方便大家根據需要保留某些年份的真題作為最后的模擬。所以造成了一些題目和解析的編號錯誤。 數據結構: P11 P20 P56 P278 P326 “2.”中第 3 行”題 5改成”9”&#xff0c;第6行”題 8”改成…

css3詳解

一.什么是CSS3 CSS3是Cascading Style Sheets的第三個版本&#xff0c;是一種用于描述文檔樣式的語言&#xff08;CSS3是CSS&#xff08;層疊樣式表&#xff09;技術的升級版本&#xff09;。它是前端開發中用于控制網頁布局和樣式的技術之一。CSS3引入了許多新的特性和功能&a…

Linux常用操作命令大全

Linux常用操作命令大全 Linux,作為一款開源的操作系統,深受全世界開發者和系統管理員的喜愛。在Linux環境下,用戶通過命令行界面可以執行各種操作,從而實現對系統的全面控制。本文將詳細介紹Linux中常用的操作命令,幫助讀者更好地理解和運用這些命令。 一、文件操作命令…

hexo圖片顯示不出且圖片路徑錯誤/.com//

參考博客&#xff1a; hexo 圖片顯示問題及使用typora設置圖片路徑-CSDN博客 javascript - hexo 圖片路徑錯誤/.com// - SegmentFault 思否 先說如何讓hexo圖片成功地顯示出來 Step1: 修改config設置 將 _config.yml 設置文件中的 post_asset_folder 修改為 true 這一步的作…

平衡二叉樹,二叉樹的路徑,左葉子之和

第六章 二叉樹part04 今日內容&#xff1a; 110.平衡二叉樹 257. 二叉樹的所有路徑 404.左葉子之和 110.平衡二叉樹 &#xff08;優先掌握遞歸&#xff09; 給定一個二叉樹&#xff0c;判斷它是否是高度平衡的二叉樹。 本題中&#xff0c;一棵高度平衡二叉樹定義為&am…

【不可不知的考研復試秘籍 1】

----------------------------------------------------------------------------------------------------- 考研復試科研背景提升班 教你快速深入了解掌握考研復試面試中的常見問題以及注意事項&#xff0c;系統的教你如何在短期內快速提升自己的專業知識水平和編程以及英語…

windows下安裝cnpm

cnpm是淘寶團隊開發的一個針對中國用戶的npm鏡像源&#xff0c;它是npm的一個定制版本。由于國外的npm源在國內訪問速度較慢&#xff0c;所以cnpm鏡像源可以提供更快的下載速度。cnpm的使用方式與npm基本相同&#xff0c;只需將npm替換為cnpm即可。 要想使用cnpm等先安裝node.…

反序列化逃逸 [安洵杯 2019]easy_serialize_php1

打開題目 題目源碼&#xff1a; <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user&qu…

每日一題 KY148還是暢通工程

某省調查鄉村交通狀況&#xff0c;得到的統計表中列出了任意兩村莊間的距離。省政府“暢通工程”的目標是使全省任何兩個村莊間都可以實現公路交通&#xff08;但不一定有直接的公路相連&#xff0c;只要能間接通過公路可達即可&#xff09;&#xff0c;并要求鋪設的公路總長度…