AJAX(Asynchronous?JavaScript?and?XML(異步的?JavaScript?和?XML))
AJAX的作用是什么?
在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術
是一種用于創建快速動態網頁的技術
通過在后臺與服務器進行少量數據交換,AJAX?可以使網頁實現異步更新
AJAX?-?創建?XMLHttpRequest?對象
XMLHttpRequest?是?AJAX?的基礎。
XMLHttpRequest對象的方法
方法 | 描述 |
Abort() | 停止當前請求 |
getAllResponseHeaders() | 作為字符串返回完整的headers |
getResponseheader(“hederLabel”) | 作為字符串返回單個的header標簽 |
open(“method”,“URL”[,asyncFlag[,”userName”[,”password”]]]) | 設置未決的請求的目標URL方法和其他參數 |
send(content) | 發送請求 |
setRequestHeader(“label”,”value”) | 設置header并和請求一起發送 |
XMLHttpRequest對象
屬性 | 描述 |
onreadystatechange | 狀態改變的事件觸發器 |
readyState | 對象狀態(integer):0=未初始化,1=讀取中,2=已讀取,3=交互中,4=完成 |
responseText | 服務器進程返回數據的文本 |
responseXML | 服務器進程返回數據的兼容DOM的XML文檔對象 |
status | 服務器返回的狀態碼,如404=“文件未找到”、200=“成功” |
statusText | 服務器返回的狀態文本信息 |
從網頁中獲取XMLHttpRequest對象(存在兼容性問題)
//創建 XMLHttpRequest var htttRequest =null; if(document.all){htttRequest = new ActiveXObject("Microsoft.XMLHTTP"); }else{htttRequest = new XMLHttpRequest(); }
AJAX?-?向服務器發送請求
XMLHttpRequest?對象用于和服務器交換數據。
?
xmlhttp.open("GET","test1.txt",true); xmlhttp.send();
?
?
方法 | 描述 |
open(method,url,async) | 規定請求的類型、URL?以及是否異步處理請求。 method:請求的類型;GET?或?POST url:文件在服務器上的位置 async:true(異步)或?false(同步) |
send(string) | 將請求發送到服務器。 string:僅用于?POST?請求 |
GET?還是?POST?
與?POST?相比,GET?更簡單也更快,并且在大部分情況下都能用。
然而,在以下情況中,請使用?POST?請求:
無法使用緩存文件(更新服務器上的文件或數據庫)
向服務器發送大量數據(POST?沒有數據量限制)
發送包含未知字符的用戶輸入時,POST?比?GET?更穩定也更可靠
如果需要像?HTML?表單那樣?POST?數據,請使用?setRequestHeader()?來添加?HTTP?頭。然后在?send()?方法中規定您想發送的數據:
?
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
?
?
方法 | 描述 |
setRequestHeader(header,value) | 向請求添加?HTTP?頭。 header:?規定頭的名稱 value:?規定頭的值 |
異步?-?True?或?False?
True異步是通過?AJAX,JavaScript?無需等待服務器的響應,而是:
在等待服務器響應時執行其他腳本
當響應就緒后對響應進行處理
False同步是通過AJAX,JavaScript等待服務器的響應后再對后續響應進行處理
AJAX開發步驟
1.客戶端事件發生,調用JavaScript函數編寫的事件處理程序
2.在事件處理程序中創建XMLHttpRequest對象
3.配置XMLHttpRequest對象
4.XMLHttpRequest對象發送一個異步HTTP請求到服務器
5.服務器程序接收請求,處理請求,返回相應
6.XMLHttpRequest對象調用callback()函數并處理結果
7.更新HTML
?