理解Ajax,必須得理解XMLHttpRequest對象,以及此對象下的各種屬性,這樣才能構建出高效的Ajax應用程式。
註:文下皆用XHR對象來代替XMLHttpRequest對象來說明。
.open()方法,接受三個參數,發送請求的類型,URL地址,是否非同步發送的布爾值。
.send()方法,接受一個參數,請求主體發送的資料,如果不需要則填寫null。
.responseText方法,響應返回的文本。
.responseXML方法,如果響應的內容類型是text/xml application/xml,則儲存響應資料的XML DOM文檔。
.status方法,響應HTTP狀態。
.statusText方法,響應的HTTP狀態說明。
如果需要發送非同步,則需要.readyState屬性。readyState屬性,由0-4分別說明了其狀態。
0:未初始化,未調用open()方法。
1:啟動,已調用open()方法,但未調用send()方法。
2:發送,已調用send()方法,但未接收到響應。
3:接收,已接收到部分響應到的資料。
4:完成,全部接收響應的資料,並且可以在用戶端調用。
而status屬性,也是我們需要檢測的,對於HTTP協議,我們需要瞭解三個狀態200,300,304。
而對於readyState屬性,當它的值從一個值變化為另一個值得時候,會觸發一次readyStatechange事件,用於檢測每次狀態變化後的readyState的值。最後一步,當我們開始調用open()方法來響應資料時,還需要指定一次onreadystatechange事件,這個事件,是開始處理常式的必需。
瞭解HTTP頭部資訊:
我們需要使用setRequestHeader()方法來要求標頭部資訊,它接收兩個參數,頭部欄位的名稱與頭部欄位的值。
我們還可以使用getResponseHeader()方法來傳入頭部的欄位名稱。
我們還可以使用getAllResponseHeader()方法來擷取一個包含頭部資訊的長字串。
編碼問題:
我們需要encodeURIComponent()來進行編碼。