第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

JavaScript 入門教程

AJAX

Asynchronous JavaScript + XML(異步JavaScript和XML), 其本身不是一種新技術(shù),而是一個(gè)在 2005年被Jesse James Garrett提出的新術(shù)語(yǔ),用來(lái)描述一種使用現(xiàn)有技術(shù)集合的‘新’方法。(MDN)

AJAX 是2005年提出的一種術(shù)語(yǔ),并不代表某個(gè)特定的技術(shù)。

其譯名 異步JavaScript和XML 描述出了核心,就是使用 JavaScript 發(fā)送異步 HTTP 請(qǐng)求,這樣就擺脫了想要和服務(wù)端交互,必須刷新頁(yè)面的痛點(diǎn)。

學(xué)習(xí) AJAX 相關(guān)內(nèi)容前,建議有一些簡(jiǎn)單的 HTTP 相關(guān)知識(shí)的儲(chǔ)備,否則很難理解其工作流程。

1. XMLHttpRequest 對(duì)象

XMLHttpRequest 對(duì)象可以提供給前端開(kāi)發(fā)人員使用 JavaScript 發(fā)起 HTTP 請(qǐng)求的能力。該對(duì)象會(huì)被簡(jiǎn)稱為 XHR 對(duì)象。

var xhr = new XMLHttpRequest();

這樣就獲得到了一個(gè) XHR 對(duì)象的實(shí)例。接下來(lái)可以使用他發(fā)起請(qǐng)求。

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() { // 當(dāng) readyState 改變的時(shí)候
  if (xhr.readyState === 4 && xhr.status === 200) { // 判斷當(dāng)前請(qǐng)求的狀態(tài) 與 請(qǐng)求的狀態(tài)碼
    console.log(xhr.responseText); // 輸出服務(wù)端返回的內(nèi)容
  }
}
xhr.open('GET', '/', true); // 設(shè)定 GET 請(qǐng)求,請(qǐng)求的路徑是 /,并且請(qǐng)求是異步的
xhr.send(); // 發(fā)送!

圖片描述

onreadystatechange 是一個(gè)事件處理器屬性,每次 readyState 改變的時(shí)候都會(huì)觸發(fā)。

如果 readyState 為 4,即請(qǐng)求已經(jīng)完成,并且狀態(tài)碼是 200,表示請(qǐng)求結(jié)束并且服務(wù)端成功響應(yīng)。

響應(yīng)成功,通過(guò) responseText 獲取到服務(wù)端響應(yīng)的內(nèi)容。

通過(guò) open 方法,設(shè)置請(qǐng)求的方法、路徑等,例子中設(shè)置了 / 路徑,如果當(dāng)前站點(diǎn)的域名是 imooc.com,則請(qǐng)求地址就是 imooc.com/,拿到的數(shù)據(jù)應(yīng)該會(huì)是網(wǎng)站首頁(yè)的 HTML。

然后通過(guò) send 方法發(fā)送請(qǐng)求,發(fā)送后 readyState 會(huì)在各個(gè)階段發(fā)送改變,然后調(diào)用 onreadystatechange

這是一個(gè) AJAX 請(qǐng)求較為基本的流程。

更多與 AJAX 相關(guān)的內(nèi)容可以參閱 AJAX Wiki,相信閱讀完會(huì)有許多收獲。

2. ActiveXObject

IE6 之前是沒(méi)有 XHR 對(duì)象的,需要使用 ActiveXObject 對(duì)象,這是 IE 特有的。

考慮到 IE6 之前版本瀏覽器的市場(chǎng)份額,個(gè)人覺(jué)得只需要做個(gè)了解,沒(méi)太大必要再去學(xué)習(xí)使用 ActiveXObject 對(duì)象。

3. 小結(jié)

現(xiàn)代網(wǎng)頁(yè)的構(gòu)成幾乎離不開(kāi) AJAX 技術(shù),如果 JavaScript 無(wú)法發(fā)起 HTTP 請(qǐng)求,幾乎所有的現(xiàn)代網(wǎng)站都會(huì)癱瘓,變得難用。

除了 XHR 對(duì)象之外,還有 fetch API 這個(gè)后起之秀,也可以承擔(dān) XHR 對(duì)象的工作。但 fetch 還有部分缺陷,如無(wú)法監(jiān)控進(jìn)度,對(duì)狀態(tài)碼的處理邏輯不夠符合業(yè)務(wù),所以用戶面較廣的產(chǎn)品使用一般不會(huì)選擇 fetch。