AJAX-day1:

注:文件布局:

一、AJAX的概念:

AJAX是瀏覽器與服務器進行數據通信的技術 =>把數據變活

二、AJAX的使用:

  1. 使用axios庫,與服務器進行數據通信

    1. 基于XMLHttpRequest封裝,代碼簡單

    2. Vue,React項目使用

  2. 學習XMLHttpRequest對象,了解AJAX底層原理

1.axios庫的初步使用:

  1. 引入JS:https://cdn.bootcdn.net/ajax/libs/axios/1.7.2/axios.min.js 或 https://cdn.bootcdn.net/ajax/libs/axios/1.7.2/axios.js

    1. <script src="https://cdn.jsdelivr.net/npm/axios@1.7.2/dist/axios.min.js"></script>
  2. 使用axios函數:axios全攻略 | 羸弱的小金魚 (ykloveyxk.github.io)

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><script src="https://cdn.bootcdn.net/ajax/libs/axios/1.7.2/axios.min.js"></script><script>axios({url:'目標資源地址'}).then((result)=>{//對服務器返回的數據做后續處理})</script>
    </body>
    </html>

    目標資源:http://hmajax.itheima.net/api/province:省份列表數據

2.使用URL進行參數查詢:

URL后加 ?pname=河北省

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

axios({url: 'http://hmajax.itheima.net/api/area',params: {pname: `${query1.value}`,// 參數1cname: `${query2.value}` // 參數2}}).then((result) => {console.log(result.data.list);ul.innerHTML = result.data.list.map((x) => `<li>${x}</li>`).join('')console.log(result.data.list.map((x) => `<li>${x}</li>`));})

3.常用的請求方法與數據提交:

概念:對服務器資源要執行的操作

請求方法操作
GET(get)獲取數據
POST(post)提交數據
PUT(put)修改數據(全部)
DELETE(delete)刪除數據
PATCH(patch)修改數據(部分)

axios的請求配置:

url :請求的URL網址

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

params:查詢參數

data:提交的數據

//獲取數據
axios({url: '目標資源地址',//method: 'get',params:{參數名:值}}).then((result) => {//對返回的數據的處理})
 
//提交數據 ? ? ? ?
axios({url: '目標資源地址',method: 'post',data: {參數名: 值}}).then((result) => {//對返回的數據的處理})

4.axios的錯誤處理:

服務器返回的信息:Uncaught大對象里的data

語法格式:

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

三、HTTP協議:

1.請求報文:

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

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

請求報文樣例:

組成部分:

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

  2. 請求頭:以鍵值對格式攜帶的附加信息,例如:Content-Type(本次瀏覽器攜帶的內容類型)

  3. 空行:分割請求頭和內容數據,空行后是內容數據(發給服務器的資源)

  4. 請求體:發送的資源

查看請求報文:

2.用請求報文排查錯誤:

傳不了圖片(都是臨時的,清理掉了),大家看這篇:&3 在瀏覽器中查看請求報文和響應報文_f12看請求和響應怎么看-CSDN博客

查看提交的信息,判斷錯誤位置

3.響應報文:

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

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

  1. 響應行(狀態行):協議,HTTP響應狀態碼(400表示響應失敗)、狀態信息

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

  3. 空行:分割響應頭

  4. 響應體:返回的資源

查看響應報文:

HTTP狀態碼:用來表明,請求是否成功

狀態碼說明
1xx信息
2xx成功
3xx重新定向消息
4xx客戶端錯誤
5xx服務端錯誤

常見狀態碼:

200:成功

404:服務器找不到資源

四、接口文檔:

接口文檔:描述接口的文章

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

AJAXS接口:歡迎使用 - AJAX階段 (apifox.com)

五、from-serialize插件的使用:

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

引入插件:form-serialize.js插件下載&引用-CSDN博客

<!DOCTYPE html>
<html lang="en">
?
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="../bootstrap-5.3.0-alpha1-dist/css/bootstrap.min.css">
</head>
?
<body><form action="javascript" class="example"><input type="text" name="un"><input type="password" name="pw"><!-- <input type="button" class="btn" value="提交"> --></form><button class="btn">提交</button><script src="https://cdn.jsdelivr.net/npm/axios@1.7.2/dist/axios.min.js"></script><script src="../from-serialize/from-serialize.js"></script><script>const input = document.querySelector('.example')const btn = document.querySelector('.btn')btn.addEventListener('click', () => {let data = serialize(input, { hash: true, empty: true })console.log(data);})</script>
</body>
?
</html>

必須使用:

<form action="javascript" class="example"><input type="text" name="un"><input type="password" name="pw"><!-- <input type="button" class="btn" value="提交"> --></form>

的格式

form用來確定區間

name是鍵名

value是值

其中:hash 設置獲取的數據結構:

  1. true:獲取得到JS對象

  2. false:獲取得到查詢字符串

empty 設置是否獲取空值:

  1. true:允許獲取空值

  2. false:bu獲取空值

六、案例-整合登入:

代碼:

<!DOCTYPE html>
<html lang="en">
?
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="../bootstrap-5.3.0-alpha1-dist/css/bootstrap.rtl.min.css"><style>.banner {width: 700px;height: 700px;margin: 20px auto;}
?.row {margin-bottom: 15px;}
?.alert {transition: all .5s;}
?.unshow {opacity: 0;}</style>
</head>
?
<body><div class="banner"><h1>歡迎-登入</h1><div class="alert unshow" role="alert"></div><form class="login-form"><div class="row g-3 align-items-center"><div class="col-auto"><label for="username" class="col-form-label">用戶名:</label></div><div class="col-auto"><input type="text" id="username" name="username" class="form-control"aria-describedby="passwordHelpInline"></div></div><div class="row g-3 align-items-center"><div class="col-auto"><label for="password" class="col-form-label">密碼:</label></div><div class="col-auto"><input type="password" id="password" name="password" class="form-control"aria-describedby="passwordHelpInline"></div><div class="col-auto"><span id="passwordHelpInline" class="form-text">Must be 6-20 characters long.</span></div></div></form><button class="btn btn-primary">登入</button></div><script src="https://cdn.jsdelivr.net/npm/axios@1.7.2/dist/axios.min.js"></script><script src="../from-serialize/from-serialize.js"></script><script>// const un = document.querySelector('#username')// const pw = document.querySelector('#password')const input = document.querySelector('.login-form')const btn = document.querySelector('button')const alt = document.querySelector('.alert')
?function alertFn(msg, isSuccess) {alt.classList.remove('unshow')let bgStyle = isSuccess ? 'alert-success' : 'alert-danger'alt.classList.add(bgStyle)alt.innerText = msg// alert('用戶名或密碼錯誤')
?setTimeout(function () {alt.classList.add('unshow')alt.classList.remove(bgStyle)}, 2000)}
?
?btn.addEventListener('click', () => {let data = serialize(input, { hash: true, empty: true })console.log(data);if (data.username.length < 8) {alertFn('用戶名長度不能少于8位', 0)
?return //阻止代碼繼續執行}else if (data.password.length < 6) {alertFn('密碼長度不能少于6位', 0)
?return //阻止代碼繼續執行}axios({url: 'https://hmajax.itheima.net/api/login',method: 'post',data: {username: data.username,password: data.password}}).then(result => {console.log(result);
?alertFn(result.data.message, 1)
?}).catch(error => {console.log(error);
?alertFn(error.response.data.message, 0)})})</script>
</body>
?
</html>

效果:

1.初始界面:

2.直接登入時或用戶名長度少于8位時(直接點提交):

3.無密碼時或密碼少于6位時(用戶名為 :? itheima007):

4.登入失敗時:

5.成功登入(用戶名:itheima007? ?密碼:7654321):

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

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

相關文章

自定義控件繪圖篇(一)基本幾何圖形繪制

在Android開發中&#xff0c;自定義控件是一種強大的技術&#xff0c;它允許開發者創建具有獨特外觀和行為的UI組件。通過自定義控件&#xff0c;你可以實現標準組件庫中沒有的功能和設計。自定義控件通常涉及兩個主要方面&#xff1a;布局和繪圖。本回答將重點介紹如何在自定義…

哪個品牌的加密軟件穩定方便使用?

一、什么是企業加密軟件&#xff1f; 企業加密軟件是一種用于保護企業內部數據安全的工具。在數字化時代&#xff0c;隨著數據量的爆炸式增長&#xff0c;信息安全和隱私保護變得愈發重要。企業加密軟件作為保障數據安全的關鍵工具&#xff0c;受到越來越多用戶的青睞。 企業…

昆蟲學(書籍學習資料)

包括昆蟲分類&#xff08;上下冊&#xff09;、昆蟲生態大圖鑒等書籍資料。

調和均值

文章目錄 調和均值的定義和公式調和均值的幾何解釋調和均值的應用調和均值與算術平均和幾何平均的比較示例 調和均值的定義和公式 調和均值是一種特殊的平均數&#xff0c;適用于處理涉及比率或速度的數據。對于一組正數 x 1 , x 2 , … , x n x_1, x_2, \ldots, x_n x1?,x2…

Java中的AQS

Java中的AbstractQueuedSynchronizer&#xff08;AQS&#xff09;是Java并發框架的核心組件之一&#xff0c;它位于java.util.concurrent.locks包下。AQS為Java的鎖和其他同步工具提供了基礎架構&#xff0c;它使用模板設計模式和一種稱為“CLH鎖”的算法來實現高效的線程同步。…

如何使用 SwiftUI 構建 visionOS 應用

文章目錄 前言WindowsVolumes沉浸式空間結論 前言 Apple Vision Pro 即將推出&#xff0c;現在是看看 SwiftUI API 的完美時機&#xff0c;這使我們能夠將我們的應用程序適應 visionOS 提供的沉浸式世界。蘋果表示&#xff0c;構建應用程序的最佳方式是使用 Swift 和 SwiftUI。…

2024年軟件測試崗必問的100+個面試題【含答案】

一、基礎理論 1、開場介紹 介紹要領&#xff1a;個人基本信息、工作經歷、之前所做過的工作及個人專長或者技能優勢。揚長避短&#xff0c;一定要口語化&#xff0c;語速適中。溝通好的就多說幾句&#xff0c;溝通不好的話就盡量少說兩句。舉例如下&#xff1a; 面試官你好&…

Java中Predicate(謂詞),方法引用,以及正則的一些講解

1.Predicate接口簡述 FunctionalInterface public interface Predicate<T> {boolean test(T t);default Predicate<T> and(Predicate<? super T> other) {Objects.requireNonNull(other);return (t) -> test(t) && other.test(t);}default Pred…

速盾:cdn加速效果

CDN&#xff08;Content Delivery Network&#xff09;即內容分發網絡&#xff0c;是一種通過在全球多個節點服務器上緩存網站的靜態資源&#xff0c;并將用戶請求導向離用戶最近的服務器節點&#xff0c;從而提供更快速的訪問體驗的技術。 在傳統的網絡架構中&#xff0c;用戶…

鴻蒙 HarmonyOs 網絡請求 快速入門

官方文檔&#xff1a; ArkUI簡介-ArkUI&#xff08;方舟UI框架&#xff09;-應用框架 | 華為開發者聯盟 (huawei.com) 一、通過原有的http組件進行網絡請求&#xff08;方式一&#xff09; 1.1 HttpRequestOptions的操作 名稱類型描述methodRequestMethod請求方式&#xff…

12款超良心好用APP推薦,每一款都值得下載!

AI視頻生成&#xff1a;小說文案智能分鏡智能識別角色和場景批量Ai繪圖自動配音添加音樂一鍵合成視頻https://aitools.jurilu.com/分享是奉獻的果實&#xff0c;分享是快樂的前提。每天給小伙伴們分享自己認可的軟件&#xff0c;也是莫大的幸福&#xff0c;今天獲得12款好用的軟…

class類和style內聯樣式的綁定

這里的綁定其實就是v-bind的綁定&#xff0c;如代碼所示&#xff0c;div后面的引號就是v-bind綁定&#xff0c;然后大括號將整個對象括起來&#xff0c;對象內先是屬性&#xff0c;屬性后接的是變量&#xff0c;這個變量是定義在script中的&#xff0c;后通過這個變量&#xff…

flutter:監聽路由的變化

問題 當從路由B頁面返回路由A頁面后&#xff0c;A頁面需要進行數據刷新。因此需要監聽路由變化 解決 使用RouteObserver進行錄音監聽 創建全局變量&#xff0c;不在任何類中 final RouteObserver<PageRoute> routeObserver RouteObserver<PageRoute>();在mai…

flask-apscheduler 定時任務被執行兩次

定時任務沒有被多次調用&#xff0c;事實上如果多次調用的話&#xff0c;flask-apscheduler會拋出異常。 但一開始任務還是按時執行一次&#xff0c;重啟flask或者修改部分代碼后&#xff0c;就發送定時任務一次執行兩次了。 之所以會發生這種情況&#xff0c;是因為在debug模…

面試-微服務篇

springcloud組件有哪些&#xff1f; eureka、ribbon負載均衡、feign、hystrix、zuul/gateway網關 nacos、ribbon、feign、sentinel、gateway 服務注冊和發現是什么意思&#xff1f;springcloud如何實現服務注冊發現&#xff1f; 微服務中必須要使用的組件&#xff0c;考察我們使…

LeetCode刷題記錄:(15)三角形最小路徑和

知識點&#xff1a;倒敘的動態規劃 題目傳送 解法一&#xff1a;二維動態規劃【容易理解】 class Solution {public int minimumTotal(List<List<Integer>> triangle) {int n triangle.size();if (n 1) {return triangle.get(0).get(0);}// dp[i][j]:走到第i層第…

[240705] 美光或將助力英偉達 RTX 50系列領先 AMD | 中國領跑生成式人工智能專利競賽

目錄 美光或將助力英偉達 RTX 50系列領先 AMD中國領跑生成式人工智能專利競賽 美光或將助力英偉達 RTX 50系列領先 AMD &#x1f4e2; 美光近日公布了其下一代顯存 GDDR7 的性能數據&#xff0c;顯示出在游戲性能方面高達30%的提升&#xff0c;這對于即將推出的顯卡來說無疑是…

白騎士的C語言教學基礎篇 1.2 C語言基礎語法

系列目錄 上一篇&#xff1a;白騎士的C語言教學基礎篇 1.1 C語言介紹 在這一篇內容中&#xff0c;我們將介紹C語言的基礎語法&#xff0c;包括C語言的程序結構、數據類型與變量、常量與運算符。 C語言程序結構 C語言程序的基本結構包括頭文件、主函數和語句。一個簡單的C語言…

Java+前后端分離架構+ MySQL8.0.36產科信息管理系統 產科電子病歷系統源碼

Java前后端分離架構 MySQL8.0.36產科信息管理系統 產科電子病歷系統源碼 產科信息管理系統—住院管理 數字化產科住院管理是現代醫院管理中的重要組成部分&#xff0c;它利用數字化技術優化住院流程&#xff0c;提升醫療服務質量和效率。以下是對數字化產科住院管理的詳細闡述…

【Spring Boot】統一異常處理

目錄 統一異常處理一. 概念二. 全局異常處理三. 處理特定異常 統一異常處理 一. 概念 其實統一異常是運用了AOP&#xff08;對某一類事情的集中處理&#xff09;的思維&#xff0c;簡單概括就是在我們進行前后端數據交互的時候&#xff0c;拋出的任何的異常都能夠自動捕獲然后…