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

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

所謂的異步,是指某段程序執行不會阻塞其餘程序執行,其表現形式爲程序的執行順序不依賴程序自己的書寫順序。
從而提高總體執行效率。異步

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

get和post請求方式的差別post

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

二、GET能夠經過在請求URL上添加請求參數事件

三、POST能夠經過xhr.send('name=itcast&age=10')ip

四、POST須要設置get

五、GET效率更好(應用多)it

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

2:服務端相應
HTTP響應是由服務端發出的,因爲服務器作出響應須要時間(好比網速慢等緣由),因此咱們須要監聽服務器響應的狀態,而後才能進行處理。
a、獲取狀態行(包括狀態碼&狀態信息)
xhr.status 狀態碼,如200、30四、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:響應已完成;您能夠獲取並使用服務器的響應了。

相關文章
相關標籤/搜索