JavaScript中的XMLHttpRequest與WebAPI它僅僅是一種客戶端與服務端的關系。JavaScript中的XMLHttpRequest負責在客戶端發起請求,而Web API負責在服務端返回響應。
Web API:
和人不同,代碼沒有一雙能夠讀書或者看圖的眼睛。它只能以一種它能讀取的格式來查看“某樣東西”。這也就是數據交換格式(如JSON)的用武之地。Web API是通過HTTP服務進行交互的一組指令和標准。這些交互可以包括創建、讀取、更新、刪除等操作,且Web API都會有一份說明,概述如何使用這些指令和標准。
JavaScript在幕后進行的這些操作,如請求某項數據,稱為異步操作。異步操作通常指那些發生在幕后的、不會中斷主進程的操作。
JavaScript中的XMLHttpRequest對象:
JavaScript是一種基於對象的語言,而XMLHttpRequest就是一類對象。當使用new XmlHttpRequest()語法,並將其返回值給一個變量時,它就具有了從某一地址請求資源的功能。
我們需要關注XMLHttpRequest中以下這些可用函數:
1、open(method,url,async(可選),user(可選),password(可選));
2、send()。
以及下面這些屬性:
1、onreadstatechange(可以在代碼中給它賦值為一個函數);
2、readyState(返回一個0~4)的值,用來表示狀態碼;
3、status(返回HTTP狀態碼,如200表示請求成功);
4、responseText(當請求成功時,該屬性會包含作為文本的響應體,如我們請求的JSON)。
注意:屬性的值可以是一個函數。因為JavaScript中的函數也是一類對象。對象是一類數據,因此它可以被賦值給一個變量(屬性)、修改和傳遞。在編程中,這種情況稱為“函數是一等公民”。onreadystatechange的值應該是一個函數。
創建一個XMLHttpRequest對象,並讓它從OpenWeather-Map API獲取JSON數據:
在本例的第二行代碼中,創建了一個保存着JSON資源的URL的字符串。然后將一個函數賦值給myXmlHttpRequest的onreadystatechange屬性。該函數會在每次readyState屬性發生變化時執行。在這一函數中,會判斷readyState值是否為4(表示完成),以及HTTP狀態碼是不是200(表示成功)。如果這兩個條件都返回true,就將JSON文本解析成JSON對象。