ajax客戶端請求與服務端響應淺談


AJAX,即Asynchronous Javascript And XML,AJAX本質是在HTTP協議的基礎上以異步的方式與服務器進行通信。

所謂的異步,是指某段程序執行不會阻塞其他程序執行,其表現形式為程序的執行順序不依賴程序本身的書寫順序。
從而提升整體執行效率。

1:客戶端請求
js內置http請求對象 XMLHttpRequest;
a、請求行
xhr.open() 發起請求,可以是get、post方式

get和post請求方式的差異

1、GET沒有請求主體,使用xhr.send(null)

2、GET可以通過在請求URL上添加請求參數

3、POST可以通過xhr.send('name=itcast&age=10')

4、POST需要設置

5、GET效率更好(應用多)

6、GET大小限制約4K,POST則沒有限制
b、請求頭
xhr.setRequestHeader() 設置請求頭
c、請求內容
xhr.send() 發送請求主體 get方式使用xhr.send(null)

2:服務端相應
HTTP響應是由服務端發出的,由於服務器做出響應需要時間(比如網速慢等原因),所以我們需要監聽服務器響應的狀態,然后才能進行處理。
a、獲取狀態行(包括狀態碼&狀態信息)
xhr.status 狀態碼,如200、304、404等; xhr.statusText 狀態碼信息如OK;
b、獲取響應頭
xhr.getResponseHeader('Content-Type')獲取指定頭信息;xhr.getAllResponseHeaders();獲取全部響應頭信息;
c、響應主體
xhr.responseText xhr.responseXML 都表示響應主體,我們需要檢測並判斷響應頭的MIME類型后確定使用request.responseText或者request.responseXML。

onreadystatechange是Javascript的事件的一種,其意義在於監聽XMLHttpRequest的狀態,各種狀態如下:
**readyState**
0:請求未初始化(還沒有調用 open())。
1:請求已經建立,但是還沒有發送(還沒有調用 send())。
2:請求已發送,正在處理中(通常現在可以從響應中獲取內容頭)。
3:請求在處理中;通常響應中已有部分數據可用了,但是服務器還沒有完成響應的生成。
4:響應已完成;您可以獲取並使用服務器的響應了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM