原生JavaScript實現Ajax的使用
阿新 • • 發佈:2019-01-28
Ajax 是一種無需重新載入整個網頁的情況之下能夠更新部分網頁的技術。非同步請求,區域性重新整理。
1.非同步操作
- 需要XMLHttpRequest物件。
- 後臺與伺服器進行資料的交換,資料交換的同時不載入整個頁面,可以對網頁進行部分的更新。
2.XMLHttpRequest 物件
例項化,建立XMLHttpRequest物件(需要判斷網頁)
var request; if(window.XMLHttpRequest) { request=new XMLHttpRequest();//IE7+,Firefox,Chrome,Opera,Safari... } else
2.HTTP請求
- 包含四個部分
- HTTP請求的方法或動作,即GET/POST
- 正在請求的URL
- 請求頭,包含一些客戶端環境資訊,身份驗證資訊等
- 請求體,即請求正文,可以包含客戶提交的查詢字串資訊,表單資訊等
請求頭與請求體中間有空行,表示請求頭已經結束
- GET/POST
- GET用於查詢,不改變資料資訊;用URL傳遞引數(所有人可見);所傳送資訊的數量有限制,一 般在2000個字元;冪等
- POST用於修改、新建資料;傳遞的引數嵌入http請求體中;數量無限制;安全
3.HTTP響應
- 包含三個部分
- 狀態碼(數字和文字組成),用來顯示請求是成功還是失敗。
- 相應頭,包含許多有用的資訊,如伺服器型別、日期時間、內容型別。。。
- 響應體,即相應正文
- 狀態碼
- 1xx:資訊類,表示收到web瀏覽器請求,正在進一步的處理。
- 2xx:成功,使用者請求被正確接收,理解和處理。200 OK
- 3xx:重定向,請求沒有成功,客戶必須採取進一步的動作
- 4xx:客戶端錯誤,提交的清錯有錯誤。404 NOT Found
- 5xx:伺服器錯誤,伺服器不能完成對請求的處理。500
4.步驟
例項化,建立XMLHttpRequest物件(需要判斷網頁)
var request; if
- 傳送請求(方法)
- open(method,url,async) 引數分別為:GET或POST/地址/true或false(可不寫) 呼叫http請求
- send(string) 把請求傳送到伺服器。當方法為POST時要填寫,GET可以不寫或者寫null
- 在POST時,需要在open()和send()中新增一行程式碼,用來設定send()方法的格式
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
取得響應
- responseTest:獲得字串形式的響應資料。
- responseXML:獲得XML形式的響應資料。
- status和statusTest:以數字和文字形式返回HTTP狀態碼。
- getAllResponseHeader():獲取所有的響應報頭
- getResponseHeader():查詢響應中的某個欄位的值。
- readyState屬性:為4時表示請求已完成,且響應已就緒。
var request=new XMLHttpRequest(); request.open("GET","get.php",true); request.send(); request.onreadystatechange=function() { if(request.readyState===4&&request.status===200) { //做一些事情 request.responseText } }