前端AJAX講解

目錄

1.AJAX是什么?

2.異步交互和同步交互

3.AJAX常見應用情景和優缺點

4.AJAX的優缺點

5.AJAX發送異步請求(四步操作)

6.經典案例


1.AJAX是什么?

AJAX即“Asynchronous JavaScript and XML”(異步的JavaScript與XML技術),指的是一套綜合了多項技術的瀏覽器端網頁開發技術。

2.異步交互和同步交互

? ? 同步:
?? ?(1)發一個請求,就要等待服務器的響應結束,然后才能發第二個請求!中間這段時間就是一個字“卡”
?? ?(2)刷新的是這個頁面

? ? 異步:
?? ?(1)發一個請求后,無需等待服務器的響應,然后就可以發第二個請求!
?? ?(2)可以使用js接口服務器的響應,然后使用js來局部刷新

? ? 【示例】使用JS點擊按鈕觸發事件,設置內容改變標簽內容(局部刷新)

3.AJAX常見應用情景和優缺點

?3.1 應用情景
?? ?(1)當我們在百度中輸入一個"Java"后,會馬上出現一個下拉列表!列表中顯示的是包含"Java"字的10個關鍵字。

?? ?其實這里就使用了AJAX技術!當文件框發生了輸入變化時,瀏覽器會使用AJAX技術向服務器發送一個請求,查詢包含"Java"的前10個關鍵字,然后服務器會把查詢到的結果響應給瀏覽器,最后瀏覽器把這10個關鍵字顯示在下拉列表中。

?? ?整個過程中頁面沒有刷新,只是刷新頁面中的局部位置而已。
?? ?當請求發出后,瀏覽器還可以進行其它操作,無需等待服務器的響應。

?? ?(2)當輸入用戶名后,把光標移動到其它表單項上時,瀏覽器會使用AJAX技術向服務器發出請求,服務器會查詢名為張三的用戶是否存在,最終服務器返回true表示名為張三的用戶已經存在了,瀏覽器在得到結果后顯示"用戶名已被注冊!"。
?? ?
?? ?整個過程中頁面沒有刷新,只是局部刷新了
?? ?在請求發出后,瀏覽器不用等待服務器響應結果就可以進行其它操作。

?? ?=========================================
?? ?百度的搜索框
?? ?用戶注冊時(校驗用戶是否存在)

4.AJAX的優缺點

? ? 優點:異步交互:增強了用戶的體驗
? ? 性能:因為服務器無需再響應整個頁面,只需要響應部分內容,所以服務器的壓力減輕了!

? ? 缺點:
?? ?ajax不應用在所有場景
?? ?ajax無端的增多了對服務器的訪問次數,給服務器帶來了壓力。


5.AJAX發送異步請求(四步操作)

? ? XMLHttpRequest 對象用于在后臺與服務器交換數據。

(1)第一步(得到XMLHttpRequest)
?? ?ajax其實只需要學習一個對象:XMLHttpRequest,如果掌握了它,就掌握了ajax。
?? ?得到XMLHttpRequest
?? ? ? ?--》大多數瀏覽器都支持: var xmlHttp = new XMLHttpRequest();
?? ? ? ?--》IE6.0:var xmlHttp = new ActiveXObject("Msml2.XMLHTTP");
?? ? ? ?--》IE5.5:var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

?? ?**--封裝得到XMLHttpRequest的函數
?? ?function createXMLHttpRequest() {
?? ??? ?try {
?? ??? ??? ?return new XMLHttpRequest(); //Firefox, Opera 8.0+, Safari
?? ??? ?} catch (e) {
?? ??? ??? ?try {
?? ??? ??? ??? ?return new ActiveXObject("Msml2.XMLHTTP"); // Internet Explorer 6.0
?? ??? ??? ?} catch (e) {
?? ??? ??? ??? ?try {
?? ??? ??? ??? ??? ?return new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer 5.5
?? ??? ??? ??? ?} catch (e) {
?? ??? ??? ??? ??? ?alert("哥們兒,你用的是什么瀏覽器啊");
?? ??? ??? ??? ??? ?throw e;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ?};

(2)第二步(打開與服務器的連接)
?? ?XMLHttp.open():用來打開與服務器的連接,它需要三個參數
?? ?---》請求方式:可以是GET或POST請求
?? ?---》請求的URL:指定服務器端資源,例如:/demo/LoginServlet
?? ?---》請求是否為異步:如果為true表示發送異步請求,否則同步請求

?? ?=====》xmlHttp.open("GET","/demo/LoginServlet",true);----GET請求
?? ?
?? ?如果是POST請求如下(如果發送請求時需要帶有參數,一般都用POST請求)
?? ?=====》open:xmlHttp.open("post",...);
?? ?=====》添加一步:設置Content-Type請求頭:
?? ??? ?----》xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
?? ??? ?---->send: xmlHttp.send("username=zhangsan&password=123");//發送請求時指定的請求體


? ? (3)第三步(發送請求)
?? ?---》xmlHttp.send(null):如果不給參數可能會造成部分瀏覽器無法發送
?? ?*****參數:就是請求的內容!如果是GET請求,必須給出null。

? ? (4)第四步()
?? ?---》在xmlHttp對象的一個事件上注冊監聽器:onreadystatechange
?? ?---》xmlHttp對象5個狀態
?? ?0:初始化未完成狀態,只是創建了XMLHttpRequest對象,還未調用open()方法
?? ?1:請求已開始,open()方法已調用,但還沒調用send()方法
?? ?2:請求發送完成狀態,send()方法已調用
?? ?3:開始讀取服務器響應
?? ?4:讀取服務器響應結束(通常我們只關心這個狀態)

?? ?----》得到xmlHttp對象的狀態
?? ?---------》var state = xmlHttp.readyState;//可能是0 1 2 3 4

?? ?----》得到服務器響應的狀態碼
?? ?---------》var status = xmlHttp.status;//200 ? ?404 ? ?500
?? ?
?? ?----》得到服務器響應的內容
?? ?---------》var content ?= xmlHttp.responseText;//得到服務器的響應的文本格式的內容
?? ?---------》var content = ?xmlHttp.responseXML;//得到服務器的響應的xml響應的內容,document對象

?? ?xmlHttp.onreadystatechange = function(){//xmlHttp的5種狀態都會調用本方法
?? ??? ?if(xmlHttp.readyState == 4 && xmlHttp.status == 200){//雙重判斷:判斷是否為4狀態,而且還要判斷是否為200
?? ??? ??? ?//獲取服務器的響應內容
?? ??? ??? ?var content ?= xmlHttp.responseText;
?? ??? ?}
?? ?};

6.經典案例

? ? (1)點擊按鈕,使用ajax響應內容在客戶端某標簽中顯示響應的內容
?? ?(2)發送POST請求
?? ?(3)用戶名是否已被注冊

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

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

相關文章

指針基礎實踐

文章目錄 1.聲明指針2.初始化指針3.指針地址和大小,值4.指針解引用,修改值5.指針指向堆內存,修改值6.申請堆內存并釋放7.數組釋放8.指針運算9.指針遞增10.指針遞減11.指針常量12.常量指針13.常量指針指向常量 1.聲明指針 2.初始化指針 3.指針地址和大小…

【數據結構】二叉樹(Binary Tree)

文章目錄 一、樹的概念及結構二、二叉樹的概念及結構1.二叉樹的概念2.特殊的二叉樹3.二叉樹的性質 三、二叉樹的存儲順序存儲鏈式存儲 四、二叉樹的實現1.創建二叉樹2.二叉樹的遍歷前序遍歷中序遍歷后序遍歷層序遍歷根據遍歷順序創建二叉樹 3.二叉樹的基本操作1.總結點個數2.二…

ctfshow之_萌新web9至web10

一、訪問在線靶場ctfshow 1、web9 如下圖所示,進入_萌新賽的web9問題,題目提醒flag在config.php中: 如上圖所示,可以get傳參,且傳入的參數需要正則匹配system、exec、highlight,且不區分大小寫&#xff0…

C++設計模式|創建型 5.原型模式

1.什么是原型模式? 原型模式?種創建型設計模式,該模式的核?思想是基于現有的對象創建新的對象,?不是從頭開始創建。 在原型模式中,通常有?個原型對象,它被?作創建新對象的模板。新對象通過復制原型對象的屬性和狀…

Mac IDEA 自動補全mybatis sql語句

導航 Mac IDEA 自動補全mybatis sql語句一、點擊IDEA 右側Database選項二、選擇添加對應數據庫三、輸入數據庫信息和方案四、輸入數據庫信息和方案五、成功 Mac IDEA 自動補全mybatis sql語句 背景: 想在Mapper中,能夠實現自動檢索數據庫表和對應的字段…

QT日志類SimpleQtLogger的簡單記錄

在現代軟件開發中,日志記錄是必不可少的部分。它不僅幫助開發者在調試和維護軟件時了解程序的運行狀態,還能提供關鍵的錯誤信息。對于使用Qt框架開發應用程序的開發者來說,選擇一個合適的日志庫至關重要。本文將詳細介紹Qt日志庫SimpleQtLogg…

web前端之sass中的顏色函數、active按鈕激活、hover鼠標懸浮、disabled禁用、scss循環、css

MENU 效果圖htmlsassscss編譯后的css頁面css 效果圖 注意查看藍色按鈕。 html <div class"box"><button class"btn type_1">按鈕</button><button class"btn type_2">按鈕</button><button class"btn ty…

一文讀懂通用漏洞評分系統CVSS4.0:順帶理清CVE、CWE及其與CVSS之間的關系

事件響應和安全團隊論壇 (FIRST&#xff0c;Forum of Incident Response and Security Teams) 于 2023 年 11 月 1 日正式推出第四版通用漏洞評分系統 (CVSS 4.0&#xff0c;Common Vulnerability Scoring System version 4.0)。CVSS 4.0 是評估計算機系統安全漏洞嚴重性的行業…

C++ 多態性

一 多態性的分類 編譯時的多態 函數重載 運算符重載 運行時的多態 虛函數 1 運算符重載的引入 使用C編寫程序時&#xff0c;我們不僅要使用基本數據類型&#xff0c;還要設計新的數據類型-------類類型。 一般情況下&#xff0c;基本數據類型的運算都是運算符來表達&#x…

【C++】詳解C++的模板

目錄 概念 ?編輯 語法 函數模板 類模板 非類型模板參數 模板的特化 函數模板特化 類模板特化 全特化 偏特化 分離編譯 概念 模板是C中非常厲害的設計&#xff0c;模板把通用的邏輯剝離出來&#xff0c;讓不同的數據類型可以復用同一種模板的邏輯&#xff0c;甚至可以…

Flutter 中的 DataTable 小部件:全面指南

Flutter 中的 DataTable 小部件&#xff1a;全面指南 在Flutter的Material組件庫中&#xff0c;DataTable是一個用于展示數據的表格組件&#xff0c;它允許開發者以一種結構化和可滾動的方式展示數據集。DataTable非常適合展示詳細信息&#xff0c;如表格數據、統計數據或配置…

PHP黑魔法之md5繞過

php本身是一種弱語言,這個特性決定了它的兩個特點: 輸入的參數都是當作字符串處理變量類型不需要聲明,大部分時候都是通過函數進行類型轉化php中的判斷有兩種: 松散比較:只需要值相同即可,類型不必相同,不通類型比較會先轉化為同類型,比如全數字字符串和數字比較,會比…

凸優化理論學習三|凸優化問題(一)

系列文章目錄 凸優化理論學習一|最優化及凸集的基本概念 凸優化理論學習二|凸函數及其相關概念 文章目錄 系列文章目錄一、優化問題&#xff08;一&#xff09;標準形式的優化問題&#xff08;二&#xff09;可行點和最優點&#xff08;三&#xff09;局部最優點&#xff08;四…

《Python編程從入門到實踐》day28

# 昨日知識點回顧 安裝Matplotlib 繪制簡單的折線圖 # 今日知識點學習 15.2.1 修改標簽文字和線條粗細 # module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? # 解決辦法&#xff1a;matplotlib切換圖形界面顯示終端TkAgg。 #…

使用Three.js繪制快速而逼真的水

本文將利用GPUComputationRenderer來實現水波紋的繪制&#xff0c;相似的案例可以看threejs官方的GPGPU Water示例。更多精彩內容盡在數字孿生平臺。 什么是 GPGPU GPGPU代表通用圖形處理單元&#xff08;General-Purpose Graphic Processing Unit&#xff09;&#xff0c;意思…

1146 -Table ‘performance schema.session variables‘ doesn‘t exist的錯誤解決

一、問題出現 今天在本地連數據庫的時候&#xff0c;發現這個問題&#xff0c;哎呦我擦&#xff0c;差點嚇死了 二、解決辦法 1&#xff09;找文件 用everything搜一下MySQL Server 5.7 然后去Windows服務找一下MySQL配置文件的具體路徑 如果知道那最好&#xff0c;不知道那…

寶塔8.1.0去除綁定用戶

非要綁定手機號&#xff0c;確實很煩 1&#xff0c;/www/server/panel/BTPanel __init__.py if not public.is_bind():return redirect(/bind, 302) 將is_bind的路由全部注釋 2&#xff0c;/www/server/panel/class下 panelPlugin.py 注釋異常&#xff0c; 新增 softLis…

SSL協議

SSL 安全傳輸協議&#xff08;安全套接層&#xff09; 也叫TLS ---- 傳輸層安全協議 SSL的工作原理&#xff1a;SSL協議因為是基于TCP協議工作的&#xff0c;通信雙方需要先建立TCP會話。因為SSL協議需要進行安全保證&#xff0c;需要協商安全參數&#xff0c;所以也需要建立…

【MySQL】7.MySQL性能優化的六大核心策略

數據庫的性能對整個應用的響應速度和用戶體驗起著至關重要的作用。MySQL&#xff0c;作為廣泛使用的開源關系型數據庫&#xff0c;提供了豐富的性能優化手段。從資源優化、查詢優化到結構、配置、代碼乃至架構優化&#xff0c;每一個層面的調整都可能帶來性能的飛躍。本文將深入…

springboot房屋租賃系統

摘要 房屋租賃系統&#xff1b;為用戶提供了一個房屋租賃系統平臺&#xff0c;方便管理員查看及維護&#xff0c;并且可以通過需求進行設備信息內容的編輯及維護等&#xff1b;對于用戶而言&#xff0c;可以隨時進行查看房屋信息和合同信息&#xff0c;并且可以進行報修、評價…