AJAX 原理_第一節_XHR 對象

文章目錄

  • 1.AJAX原理
    • 1.1 初識XML
    • 1.2 查詢參數
    • 1.3 案例-地區查詢
    • 1.4 案例-注冊-設置請求頭

1.AJAX原理

1.1 初識XML

AJAX原理是什么?

XMLHttpRequest對象

XHR對象定義:
通過XMLHttpRequest可以在不刷新頁面的情況下請求特定URL,獲取數據.這允許頁面在不影響用戶操作的情況下,更新頁面的局部內容.XMLHttpRequest 在 AJAX 編程中被大量使用

為什么學習XHR?

有更多與服務器數據通信方式
了解axios內部原理

XHR使用步驟?

1.創建XHR對象
2.調用open方法,設置url和請求方法
3.監聽loadend事件,接收結果
4.調用send方法,發起請求

下面是代碼實例:

//1.創建 XMLHttpRequest 對象
const xhr=new XMLHttpRequest()// 2.配置請求方法和請求 url 地址
xhr.open('GET','http://hmajax.itheima.net/api/province')// 3.監聽 loadend 事件,接收響應結果
xhr.addEventList('loadend',()=>{
console.log(xhr.reponse)
//將數據分離--為了展示數據--不是必要步驟
const data =JSON.parse(xhr.response)
console.log(data.list.join('<br>')
document.querySelector('.my-p').innerHTML=data.list.join('<br>'
})

1.2 查詢參數

在這里插入圖片描述

 <script>/*** 目標:使用XHR攜帶查詢參數,展示某個省下屬的城市列表*///  使用 XHR4步走// 1.創建 XML 對象const xhr=new XMLHttpRequest()// 2.配置請求方法和請求 url 地址xhr.open('GET','http://hmajax.itheima.net/api/city?pname=黑龍江省')// 3.監聽 loadend 事件,接收響應結果xhr.addEventListener('loadend',()=>{console.log(xhr.response)const data=JSON.parse(xhr.response)console.log(data)document.querySelector('.box').innerHTML=data.list.join('<br>')})// 4.發送xhr.send()</script>

1.3 案例-地區查詢

查看接口文檔:
在這里插入圖片描述

通過查看接口文檔可知,查詢參數有兩個,正常通過 GET 查詢的時候,需要拼接 比如xhr.open(‘GET’,‘http://hmajax.itheima.net/api/city?pname=黑龍江省&…’),參數一多,拼接起來的效率就低了

通過一種方法:new URLSearchParams(),可以把你傳來的對象變成參數名=參數值&參數名=參數值…的這種形式,然后直接放入到 xhr.open 中使用

方法核心代碼:

 // 1.收集帶拼接的參數值const pname=document.querySelector('.province').valueconst cname=document.querySelector('.city').value//2.將收集的參數值,寫成對象的形式,對象中有參數名:參數值的形式const qObj={pname,cname}//3.將收集而來的對象,轉化成 XXX&XXX 的形式//步驟一:const paramsObj=new URLSearchParams(qObj)//步驟二:const queryString=parmsObj.toString()

完整代碼:

 <script>
document.querySelector('.sel-btn').addEventListener('click',()=>{// 1.收集帶拼接的參數值const pname=document.querySelector('.province').valueconst cname=document.querySelector('.city').value//2.將收集的參數值,寫成對象的形式,對象中有參數名:參數值的形式const qObj={pname,cname}//3.將收集而來的對象,轉化成 XXX&XXX 的形式//步驟一:const paramsObj=new URLSearchParams(qObj)//步驟二:const queryString=paramsObj.toString()//使用 XHR 對象查詢參數// 1.創建 XML 對象const xhr=new XMLHttpRequest()// 2.配置請求方法和請求 url 地址xhr.open('GET',`http://hmajax.itheima.net/api/area?${queryString}`)// 3.監聽 loadend 事件,接收響應結果xhr.addEventListener('loadend',()=>{console.log(xhr.response)const data=JSON.parse(xhr.response)console.log(data)//處理渲染數據const htmlStr =data.list.map(araeName=>{return `<li class="list-group-item">${araeName}</li>`}).join('')console.log(htmlStr)document.querySelector('.list-group').innerHTML=htmlStr})// 4.發送xhr.send()})</script>

渲染數據代碼詳解

const htmlStr = data.list.map(areaName => {return <li class="list-group-item">${areaName}</li>;
}).join('');
  • data.list,拿數據的數組
  • .map 循環每一項,拿到一個字符串數組,每一項就是 return 的 li 標簽
  • ()里是箭頭函數,areaName就是每一項的值,后面用了模板字符串
  • .join(‘’),將字符串數組拼接起來’'表示中間不加東西的拼接

在這里插入圖片描述

1.4 案例-注冊-設置請求頭

在這里插入圖片描述
根據接口文檔,使用 XHR 對象,需要告訴服務器內容類型,比如這個文檔就是告訴服務器傳 JSON 數據
在這里插入圖片描述
在這里插入圖片描述

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

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

相關文章

BeautifulSoup 使用詳解與實戰示例

BeautifulSoup 是一個用于解析HTML和XML文檔的Python庫&#xff0c;它能夠將復雜的HTML文檔轉換成一個復雜的樹形結構&#xff0c;使得我們可以輕松地查找和提取所需的內容。下面我將詳細介紹BeautifulSoup的使用流程&#xff0c;并結合實際示例進行說明。一、安裝與基礎使用1.…

LangChain實戰——實現多輪對話 + Function Calling

隨著大語言模型&#xff08;LLMs&#xff09;的迅猛發展&#xff0c;“Function Calling”&#xff08;函數調用&#xff09;逐漸成為一個重要的能力&#xff0c;它使得模型不僅能聊天&#xff0c;還能像“中控大腦”一樣調用外部函數完成具體任務&#xff0c;比如查天氣、調用…

湖南(源點咨詢)市場調研 如何在行業研究中快速有效介入 起頭篇

行業研究從業人員經常需要在承接研究案子后快速的摸清委托方所在行業。而俗話說&#xff0c;隔行如隔山&#xff0c;快速了解行業&#xff0c;主要用于行業分析報告及為市場細分準入進行前期鋪墊&#xff0c;要想摸清一個行業&#xff0c;需要長期持續的跟蹤。了解一個行業&…

【c++】從 “勉強能用” 到 “真正好用”:中文問答系統的 200 行關鍵優化——關于我用AI編寫了一個聊天機器人……(16)

先看核心結論&#xff1a;兩段代碼的本質區別如果用一句話總結兩段代碼的差異&#xff1a;前者是 “帶中文支持的問答系統”&#xff0c;后者是 “真正適配中文的問答系統”。具體來說&#xff0c;兩段代碼的核心功能都是 “加載問答數據→接收用戶輸入→匹配答案”&#xff0c…

VR 技術在污水處理領域的創新性應用探索?

在廣州&#xff0c;VR 污水處理技術的應用可謂是多點開花。首先&#xff0c;在污水處理流程模擬方面&#xff0c;工程師們利用 VR 技術創建了高度逼真的污水處理廠三維模型&#xff0c;將污水處理的整個流程&#xff0c;從預處理去除大顆粒雜質和懸浮物&#xff0c;到初級處理通…

深度學習暑期科研項目(兩個月發EI論文)

深度學習暑期科研項目&#xff08;8周發EI論文&#xff09; 哈爾濱工業大學博士的六大選題對本科生而言&#xff0c;越早接觸系統的科研訓練開始上手科研項目&#xff0c;就越能在未來的升學求職中占據很大的優勢。暑假是提升個人簡歷、豐富科研經歷的最佳時期&#xff01;哈爾…

【RH134 問答題】第 1 章 提高命令行運行效率

目錄#!/bin/bash 是什么意思&#xff1f;PATH 變量有什么重要作用&#xff1f;echo 命令的作用是什么&#xff1f;解釋下列正則表達式的含義簡述正則表達式和 shell 模式匹配的區別&#xff0c;在 shell 命令使用正則表達式的時候需要注意什么&#xff1f;#!/bin/bash 是什么意…

OpenCV(02)圖像顏色處理,灰度化,二值化,仿射變換

【OpenCV&#xff08;01&#xff09;】基本圖像操作、繪制&#xff0c;讀取視頻 目錄圖像顏色加法灰度化二值化仿射變換圖像顏色加法 顏色加法 import cv2 as cv import numpy as np#讀圖 cao cv.imread(E:\hqyj\code\opencv\images\cao.png) pig cv.imread(E:\hqyj\code\o…

嵌入式——單片機的獨立按鍵

一、目的功能通過開發板上的獨立按鍵k1控制d1指示燈亮滅&#xff0c;k1一次亮再按一次滅。二、硬件原理圖三、消抖理解&#xff08;一&#xff09;核心原理&#xff1a;當事件被重復觸發時&#xff0c;設置一個延遲&#xff0c;只有在該時間內沒有新的事件被觸發&#xff0c;才…

機器學習的工作流程

&#x1f31f; 歡迎來到AI奇妙世界&#xff01; &#x1f31f; 親愛的開發者朋友們&#xff0c;大家好&#xff01;&#x1f44b; 我是人工智能領域的探索者與分享者&#xff0c;很高興在CSDN與你們相遇&#xff01;&#x1f389; 在這里&#xff0c;我將持續輸出AI前沿技術、實…

聚類里面的一些相關概念介紹闡述

一、性能度量外部指標&#xff1a;聚類結果與某個“參考模型”進行比較&#xff1b;系數&#xff1a; &#xff0c;其中的 表示樣本是否屬于某類簇&#xff1b; 指數&#xff1a;&#xff0c;其中 表示樣本在兩個聚類結果中都是同一類簇&#xff0c; 表示在其中一個聚類結果中…

mmap機制

先看這個 MMAP 機制通俗易懂-CSDN博客 一句話 **mmap(memory map)是操作系統提供的“把文件或設備直接映射到進程虛擬地址空間”的機制,Java 里對應 `MappedByteBuffer`。** --- ### 1. 技術本質 - 系統調用:`mmap()`(POSIX)、`CreateFileMapping`(Windows)。 …

嵌入式硬件篇---驅動板

制作 ESP32 驅動板的核心是 “搭建 ESP32 與外設之間的橋梁”—— 因為 ESP32 的 GPIO 引腳輸出電流很小&#xff08;最大 20mA&#xff09;&#xff0c;無法直接驅動大功率設備&#xff08;如電機、繼電器、電磁閥等&#xff09;&#xff0c;驅動板的作用就是放大電流 / 功率&…

UniappDay01

1.技術架構2.創建uniapp項目 通過HBuilderX創建 官網安裝創建uniapp vue3項目安裝uniapp vue3的編譯器在工具欄啟動微信小程序開啟服務端口模擬器窗口分離和置頂 通過命令行創建 3.pages.json和tabbar案例 pages.json用來配置路由&#xff0c;導航欄&#xff0c;tabbar等頁面類…

子空間投影,投影矩陣,最小二乘法

一、子空間投影 1.1 投影與誤差向量b 在 向量a 上的投影即 a 上離 b 最近的點&#xff1a; paTbaTaa p \frac{a^T b}{a^Ta}a paTaaTb?a 我們記 誤差 e b - p&#xff0c;顯然誤差e 和 a 是正交的。 1.2 投影矩陣向量b 在子空間S上的投影是S中離b 最近的向量p。 我們做如下推…

基于FPGA的SPI控制FLASH讀寫

基于FPGA的SPI控制FLASH讀寫 文章目錄基于FPGA的SPI控制FLASH讀寫一、SPI簡介二、FLASH_M25P16簡介信號描述功能操作注意時序三、設計思路框圖設計狀態機設計四、上板驗證1、讀ID2、讀數據3、扇區擦除寫數據五、總結六、代碼一、SPI簡介 SPI是Serial Peripheral interface的縮…

Pytest 參數化進階:掌握 parametrize 的多種用法

概述 在自動化測試中,@pytest.mark.parametrize 不僅僅能用來為測試函數提供多組輸入數據,還能配合其他功能實現更復雜的測試邏輯。本文將帶你深入了解 @pytest.mark.parametrize 的多種常見用法,助你在不同場景下寫出更高效、更清晰的測試代碼 基礎用法回顧:單個參數化 …

K8S 九 安全認證 TLS

目錄第九章 安全認證訪問控制概述認證管理授權管理 RBACRBACRolerules中的參數RoleBinding9.4 準入控制其他K8S的TLS是什么&#xff08;DeepSeek&#xff09;1. 加密通信2. 身份認證&#xff08;Authentication&#xff09;3. 數據完整性K8s 中 TLS 的具體應用**1. API Server …

積分兌換小程序Java

某個學校為了激勵學生踴躍參加一些社會實踐活動&#xff0c;會對參與者給予一些校園積分&#xff0c;學生們獲得校園積分后可以使用校園積分在指定的老師那兌換一些學習用具&#xff0c;當前可兌換的物品和對應的積分數量如下&#xff1a;鉛筆1分橡皮2分作業本3分文具盒5分為了…

函數指針示例

使用函數指針來調用 printf。下面是對代碼的詳細解釋&#xff1a;&#x1f4c4; 源代碼解析#include <stdio.h>int main() {int (*myshow)(const char *, ...); // 聲明一個函數指針&#xff0c;指向可變參數函數printf("hello world!\n");myshow printf; /…