Ajax = Asynchronous JavaScript and XML
創(chuàng)建XMLHttpREquest對象
var request = new XMLHttpRequest() //構造函數創(chuàng)建對象
兼容IE的寫法
var request
if(window.XMLHttpRequest){
request = new XMLHttpRequest() // Firefox, Chrome, IE7+, Opera, Safari
}else{
request = new ActiveXObject("Microsoft.XMLHTTP") // IE6, IE5
}
HTTP傳輸
一個完整的HTTP傳輸過程灰嫉,通常有下面7個步驟:
- 建立TCP連接
- Web瀏覽器向Web服務器發(fā)送請求命令
- Web瀏覽器發(fā)送請求頭信息
- Web服務器應答
- Web服務器發(fā)送應答頭文件
- Web服務器向瀏覽器發(fā)送數據
- Web服務器關閉TCP連接
HTTP請求
一個HTTP請求一般由四部分組成:
- HTTP請求的方法或動作, GET還是POST
- 正在請求的URL, 請求地址
- 請求頭, 包含一些客戶端環(huán)境信息, 身份驗證信息等
- 請求體,也就是請求正文, 請求正文中可以包含客戶提交的查詢字符串信息, 表單信息等等
GET/POST
GET
- 一般用于信息獲取
- 使用URL傳遞參數
- 對所有發(fā)送信息的數量也有限制, 一般在2000個字符缀遍,直接顯示在瀏覽器地址欄声功,不安全
- 冪等
POST
- 一般用于修改服務器上的資源
- 對所發(fā)送信息數量無限制
HTTP響應
一個HTTP響應一般由三部分組成:
- 一個數字和文字組成的狀態(tài)碼, 用來顯示請求是否成功
- 響應頭, 響應頭也和請求頭一樣包含許多有用的信息,例如服務器類型、日期時間易遣、內容類型和長度等
- 響應體, 也就是響應正文
狀態(tài)碼
發(fā)送請求
open(method, url, async)
-method: post還是get
-url: 請求地址
-async: true為異步, false為同步
send(string)
string: 主要用于post, 請求內容
request.open("GET", "get.php", true)
request.send()
request.open("POST", "post.php", true)
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
request.send("name=Adam&sex=male")
獲取響應
responseText: 獲得字符串形式的響應數據
responseXML: 獲得XML形式的響應數據
status和statusText: 以數字和文本形式返回HTTP狀態(tài)碼
getAllResponseHeader(): 獲取所有的響應報頭
getResponseHeader(): 查詢響應中的某個字段的值
readyState屬性
0: 請求未初始化, open還沒有調用
1: 服務器連接已建立, open已經調用了
2: 請求已接收, 也就是接收到頭信心了
3: 請求處理中, 也就是接收到響應主體了
4: 請求已完成, 且響應已就緒, 也就是響應完成了
其實readyState主要作用就是來監(jiān)聽瀏覽器響應變化,下面舉個例子
var request = new XMLHttpRequest()
request.open("GET", "get.php", true)
request.send()
//當監(jiān)聽到請求完成時嫌佑,我們做一些動作
request.onreadystatechange = function(){
if(request.readyState === 4 && request.status === 200){
...
request.responseText
}
}
Nodejs建立服務器
url組成
API及用法