2005年痘儡,Jesse James Garrett 發(fā)表了一篇在線文章刊咳,題為” Ajax:A new Approach to Web Applications “措嵌。他在這篇文章里介紹了一種技術(shù),用他的話說芦缰,就叫 Ajax,是對 Asynchronous JavaScript + XML 的簡寫枫慷。這一技術(shù)能夠向服務(wù)器請求額外的數(shù)據(jù)而無須重載(刷新)頁面让蕾,會帶來更好的用戶體驗。
XMLHttpRequest 對象
Ajax 技術(shù)的核心是 XMLHttpRequest 對象或听,這是由微軟首先引入的一個特性探孝,其他瀏覽器提供商后來都提供了相同的實現(xiàn)。
responseText:作為響應(yīng)主體被返回的文本誉裆。
responseXML:如果響應(yīng)的內(nèi)容類型是”text/xml“或”application/xml“顿颅,這個屬性中保存包含著響應(yīng)數(shù)據(jù)的 XML DOM 文檔。
status:響應(yīng)的 HTTP 狀態(tài)足丢。
statusText:HTTP 狀態(tài)的說明粱腻。
var request = new XMLHttpRequest();
request.onload = function(){
console.log(this.responseText);
}
request.open("GET","/xxx");
request.send();
這就是一個簡單的 Ajax。
readyState 屬性
屬性值如下:
0:未初始化斩跌。尚未調(diào)用 open() 方法绍些。
1:啟動。已經(jīng)調(diào)用 open() 方法耀鸦,但尚未調(diào)用 send() 方法柬批。
2:發(fā)送。已經(jīng)調(diào)用 send() 方法袖订,但尚未接收到響應(yīng)氮帐。
3:接收。已經(jīng)接收到部分響應(yīng)數(shù)據(jù)洛姑。
4:完成上沐。已經(jīng)接收到全部響應(yīng)數(shù)據(jù),而且已經(jīng)可以在客戶端使用了吏口。
只要 readyState 屬性的值由一個值變成另一個值奄容,都會觸發(fā)一次 readystatechange 事件冰更。
var request = new XMLHttpRequest();
request.onreadystatechange = function(){
console.log(this.readyState); // 1 2 3 4
};
request.open('GET','/xxx');
request.send()
HTTP 頭部信息
Accept:瀏覽器能夠處理的內(nèi)容類型。
Accept-Charset:瀏覽器能夠顯示的字符集昂勒。
Accept-Encoding:瀏覽器能夠處理的壓縮編碼蜀细。
Accept-Language:瀏覽器當前設(shè)置的語言。
Connection:瀏覽器與服務(wù)器之間連接的類型戈盈。
Cookie:當前頁面設(shè)置的任何 Cookie奠衔。
Host:發(fā)出請求的頁面所在的域。
Referer:發(fā)出請求的頁面的 URI塘娶。
User-Agent:瀏覽器的用戶代理字符串归斤。
使用 setRequestHeader() 方法可以設(shè)置自定義請求頭部信息。這個方法接受兩個參數(shù):頭部字段的名稱和頭部字段的值刁岸。要成功發(fā)送請求頭部信息脏里,必須在調(diào)用 open() 方法之后且調(diào)用 send() 方法之前調(diào)用 setRequestHeader() 。
var request = new XMLHttpRequest();
request.onload = function(){
console.log(this.responseText)
};
request.open('GET','/xxx');
request.setRequestHeader('MyHeader','MyValue');
request.send()