【前端三劍客】Ajax技術實現前端開發

目錄

一、原生AJAX

1.1AJAX 簡介

1.2XML 簡介

1.3AJAX 的特點

1.3.1AJAX 的優點

1.3.2AJAX 的缺點

1.4AJAX 的使用

1.4.1核心對象

1.4.2使用步驟

1.4.3解決IE 緩存問題

1.4.4AJAX 請求狀態

二、jQuery 中的AJAX

2.1 get 請求

2.2 post 請求

三、跨域

3.1同源策略

3.2如何解決跨域

3.2.1JSONP

3.2.2CORS


一、原生AJAX

1.1AJAX 簡介

AJAX 全稱為Asynchronous JavaScript And XML,就是異步的JS 和XML。
通過AJAX 可以在瀏覽器中向服務器發送異步請求,最大的優勢:無刷新獲取數據。
AJAX 不是新的編程語言,而是一種將現有的標準組合在一起使用的新方式。

1.2XML 簡介

  • XML 可擴展標記語言。
  • XML 被設計用來傳輸和存儲數據。
  • XML 和HTML 類似,不同的是HTML 中都是預定義標簽,而XML 中沒有預定義標簽
比如說我有一個學生數據:
name = "孫悟空" ; age = 18 ; gender = "男" ;
用XML 表示:
<student><name>孫悟空</name><age>18</age><gender>男</gender>
</student>

現在已經被JSON 取代了。

{"name":"孫悟空","age":18,"gender":"男"}

1.3AJAX 的特點

1.3.1AJAX 的優點

1) 可以無需刷新頁面而與服務器端進行通信
2) 允許你根據用戶事件來更新部分頁面內容。?

1.3.2AJAX 的缺點

1) 沒有瀏覽歷史,不能回退
2) 存在跨域問題(同源)
3) SEO 不友好

1.4AJAX 的使用

1.4.1核心對象

XMLHttpRequest,AJAX 的所有操作都是通過該對象進行的。

1.4.2使用步驟

1) 創建XMLHttpRequest 對象var xhr = new XMLHttpRequest();
2) 設置請求信息xhr.open(method, url);//可以設置請求頭,一般不設置xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
3) 發送請求xhr.send(body) //get 請求不傳body 參數,只有post 請求使用
4) 接收響應//xhr.responseXML 接收xml 格式的響應數據//xhr.responseText 接收文本格式的響應數據xhr.onreadystatechange = function (){if(xhr.readyState == 4 && xhr.status == 200){var text = xhr.responseText;console.log(text);}
}

1.4.3解決IE 緩存問題

問題:在一些瀏覽器中(IE),由于緩存機制的存在,ajax 只會發送的第一次請求,剩
余多次請求不會在發送給瀏覽器而是直接加載緩存中的數據。
解決方式:瀏覽器的緩存是根據url 地址來記錄的,所以我們只需要修改url 地址
即可避免緩存問題

xhr.open("get","/testAJAX?t="+Date.now());

1.4.4AJAX 請求狀態

xhr.readyState 可以用來查看請求當前的狀態
https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/readyState

0: 表示XMLHttpRequest 實例已經生成,但是open()方法還沒有被調用。
1: 表示send()方法還沒有被調用,仍然可以使用setRequestHeader(),設定HTTP請求的頭信息。
2: 表示send()方法已經執行,并且頭信息和狀態碼已經收到。
3: 表示正在接收服務器傳來的body 部分的數據。
4: 表示服務器數據已經完全接收,或者本次接收已經失敗了

二、jQuery 中的AJAX

2.1 get 請求

$.get(url, [data], [callback], [type])
url:請求的URL 地址。
data:請求攜帶的參數。
callback:載入成功時回調函數。
type:設置返回內容格式,xml, html, script, json, text, _default。

2.2 post 請求

$.post(url, [data], [callback], [type])
url:請求的URL 地址。
data:請求攜帶的參數。
callback:載入成功時回調函數。
type:設置返回內容格式,xml, html, script, json, text, _default。

三、跨域

3.1同源策略

同源策略(Same-Origin Policy)最早由Netscape 公司提出,是瀏覽器的一種安全策略。

同源: 協議、域名、端口號必須完全相同。違背同源策略就是跨域。

3.2如何解決跨域

3.2.1JSONP

3.2.1.1JSONP 是什么

JSONP(JSON with Padding),是一個非官方的跨域解決方案,純粹憑借程序員的聰明
才智開發出來,只支持get 請求。

3.2.1.2JSONP 怎么工作的?

在網頁有一些標簽天生具有跨域能力,比如:img link iframe script。
JSONP 就是利用script 標簽的跨域能力來發送請求的。

3.2.2CORS

跨源資源共享(CORS) - HTTP | MDN

3.2.2.1CORS 是什么?

CORS(Cross-Origin Resource Sharing),跨域資源共享。CORS 是官方的跨域解決方
案,它的特點是不需要在客戶端做任何特殊的操作,完全在服務器中進行處理,支持
get 和post 請求。跨域資源共享標準新增了一組HTTP 首部字段,允許服務器聲明哪些
源站通過瀏覽器有權限訪問哪些資源

3.2.2.2CORS 怎么工作的?

CORS 是通過設置一個響應頭來告訴瀏覽器,該請求允許跨域,瀏覽器收到該響應
以后就會對響應放行。

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

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

相關文章

SQL 索引優化指南:原理、知識點與實踐案例

SQL 索引優化指南&#xff1a;原理、知識點與實踐案例 索引的基本原理 索引是數據庫中用于加速數據檢索的數據結構&#xff0c;類似于書籍的目錄。它通過創建額外的數據結構來存儲部分數據&#xff0c;使得查詢可以快速定位到所需數據而不必掃描整個表。 索引的工作原理 B-…

typedef unsigned short uint16_t; typedef unsigned int uint32_t;

你提到的這兩行是 C/C 中的類型別名定義&#xff1a; typedef unsigned short uint16_t; typedef unsigned int uint32_t;它們的目的是讓代碼更具可讀性和可移植性&#xff0c;尤其在處理精確位數的整數時非常有用。 ? 含義解釋 typedef unsigned short uint16_t;…

Hapi.js知識框架

一、Hapi.js 基礎 1. 核心概念 企業級Node.js框架&#xff1a;由Walmart團隊創建&#xff0c;現由社區維護 配置驅動&#xff1a;強調聲明式配置而非中間件 插件架構&#xff1a;高度模塊化設計 安全優先&#xff1a;內置安全最佳實踐 豐富的生態系統&#xff1a;官方維護…

【PostgreSQL數據分析實戰:從數據清洗到可視化全流程】金融風控分析案例-10.3 風險指標可視化監控

&#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 文章大綱 PostgreSQL金融風控分析之風險指標可視化監控實戰一、引言二、案例背景三、數據準備&#xff08;一&#xff09;數據來源與字段說明&#xff08;二&#xff09;數據清洗 四、…

屏幕與觸摸調試

本章配套視頻介紹: 《28-屏幕與觸摸設置》 【魯班貓】28-屏幕與觸摸設置_嗶哩嗶哩_bilibili LubanCat-RK3588系列板卡都支持mipi屏以及hdmi顯示屏的顯示。 19.1. 旋轉觸摸屏 參考文章 觸摸校準 參考文章 旋轉觸摸方向 配置觸摸旋轉方向 1 2 # 1.查看觸摸輸入設備 xinput…

AbstractQueuedSynchronizer之AQS

一、前置知識 公平鎖和非公平鎖&#xff1a; 公平鎖&#xff1a;鎖被釋放以后&#xff0c;先申請的線程先得到鎖。性能較差一些&#xff0c;因為公平鎖為了保證時間上的絕對順序&#xff0c;上下文切換更頻繁 非公平鎖&#xff1a;鎖被釋放以后&#xff0c;后申…

內存泄漏系列專題分析之十一:高通相機CamX ION/dmabuf內存管理機制Camx ImageBuffer原理

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了:內存泄漏系列專題分析之八:高通相機CamX內存泄漏&內存占用分析--通用ION(dmabuf)內存拆解 這一篇我們開始講: 內存泄漏系列專題分析之十一:高通相機CamX ION/dmabuf內存管理機制Camx ImageBuf…

《類和對象(下)》

引言&#xff1a; 書接上回&#xff0c;如果說類和對象&#xff08;上&#xff09;是入門階段&#xff0c;類和對象&#xff08;中&#xff09;是中間階段&#xff0c;那么這次的類和對象&#xff08;下&#xff09;就可以當做類和對象的補充及收尾。 一&#xff1a;再探構造…

Java MVC

在軟件開發中&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;是一種常用的設計模式&#xff0c;它將應用程序分為三個核心部分&#xff1a;模型&#xff08;Model&#xff09;、視圖&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09;。這…

嵌入式學習筆記 - 關于單片機的位數

通常我們經常說一個單片機是8位的&#xff0c;16位的&#xff0c;32位的&#xff0c;那么怎么判斷一款單片機的位數是多少位呢&#xff0c;判斷的依據是什么呢&#xff0c; 一 單片機的位數 單片機的位數是指單片機數據總線的寬度&#xff0c;也就是一次能處理的數據的位數&a…

推薦幾個常用免費的文本轉語音工具

推薦幾個常用免費的文本轉語音工具 在數字內容創作的時代&#xff0c;文本轉語音(TTS)技術已經成為內容創作者的得力助手。無論是制作視頻配音、有聲讀物、還是為網站增加語音功能&#xff0c;這些工具都能大幅提高創作效率。今天&#xff0c;我將為大家推薦幾款優質的免費文本…

Microsoft Azure DevOps針對Angular項目創建build版本的yaml

Azure DevOps針對Angular項目創建build版本的yaml&#xff0c;并通過變量控制相應job的執行與否。 注意事項&#xff1a;代碼前面的空格是通過Tab控制的而不是通過Space控制的。 yaml文件中包含一下內容&#xff1a; 1. 自動觸發build 通過指定code branch使提交到此代碼庫的…

Python Day23 學習

繼續SHAP圖繪制的學習 1. SHAP特征重要性條形圖 特征重要性條形圖&#xff08;Feature Importance Bar Plot&#xff09;是 SHAP 提供的一種全局解釋工具&#xff0c;用于展示模型中各個特征對預測結果的重要性。以下是詳細解釋&#xff1a; 圖的含義 - 橫軸&#xff1a;表示…

.NET 8 + Angular WebSocket 高并發性能優化

.NET 8 Angular WebSocket 高并發性能優化。 .NET 8 WebSocket 高并發性能優化 WebSocket 是一種全雙工通信協議&#xff0c;允許客戶端和服務端之間保持持久連接。在高并發場景下&#xff0c;優化 WebSocket 的性能至關重要。以下是針對 .NET 8 中 WebSocket 高并發性能優化…

Ubuntu 22.04.5 LTS 基于 kubesphere 安裝 cube studio

Ubuntu 22.04.5 LTS 基于 kubesphere 安裝 cube studio 前置條件 已經成功安裝 kubesphere v4.3.1 參考教程: https://github.com/data-infra/cube-studio/wiki/%E5%9C%A8-kubesphere-%E4%B8%8A%E6%90%AD%E5%BB%BA-cube-studio 1. 安裝基礎依賴 # ubuntu安裝基礎依賴 apt insta…

centos 7 安裝 java 運行環境

centos 7 安裝 java 運行環境 java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)java -version java version "1.8.0_144" Java(TM) …

Linux系統管理與編程20:Apache

蘭生幽谷&#xff0c;不為莫服而不芳&#xff1b; 君子行義&#xff0c;不為莫知而止休。 做好網絡和yum配置&#xff0c;用前面dns規劃的www的IP進行。 #!/bin/bash #----------------------------------------------------------- # File Name: myWeb.sh # Version: 1.0 # …

.NET 在鴻蒙系統上的適配現狀

目錄 .NET 在鴻蒙系統上的適配現狀 鴻蒙系統對虛擬機的限制與.NET的適配挑戰 NativeAOT 在鴻蒙系統中的適配原理與實現方式 已知問題與解決方案&#xff1a;鴻蒙系統中的 syscall 限制 鴻蒙系統適配中的技術難點與解決方案 跨平臺編譯的挑戰與應對策略 依賴庫管理與兼容…

kotlin JvmName注解的作用和用途

1. JvmName 注解的作用 JvmName 是 Kotlin 提供的一個注解&#xff0c;用于在編譯為 Java 字節碼時自定義生成的類名或方法名。 作用對象&#xff1a; 文件級別&#xff08;整個 .kt 文件&#xff09;函數、屬性、類等成員 主要用途&#xff1a; 控制 Kotlin 編譯后生成的 JV…

樹莓派4 yolo 11l.pt性能優化后的版本

樹莓派4 使用 Picamera2 拍攝圖像&#xff0c;然后通過 YOLO11l.pt 進行目標檢測&#xff0c;并在實時視頻流中顯示結果。但當前的代碼在運行時可能會比較卡頓&#xff0c;主要原因包括&#xff1a; picam2.capture_array() 是一個較慢的操作&#xff1b;YOLO 推理可能耗時較長…