var xhr=new XMLHttpRequest()//聲明一個XMLHttpRequest對象
xhr.onreadystatechange=function(){//請求/響應(yīng)過程的當(dāng)前活動階段
if(xhr.readyState==4){//數(shù)據(jù)接收完
if(xhr.status>=200&&xhr.status<=300||xhr.status==304){//響應(yīng)數(shù)據(jù)自動填充xhr對象屬性(status,statusText,responseText霎肯,responseXML)
console.log(xhr.responseText)
console.log(xhr.responseXML)
}else{
console.log("unsuccessful"+xhr.status)
}
}
}
xhr.open("post","url",true)//開始請求open(請求類型,url徙邻,是否異步請求)
xhr.setRequestHeader("Origin","url")//發(fā)起XHR請求時默認(rèn)發(fā)送HTTP頭部(Accept等)劣砍,這里自定義要添加的HTTP頭部信息
xhr.send({params:{}})//發(fā)送的參數(shù)妹田,如果沒有參數(shù)xhr.send(null),比如某些get請求
onreadystatechange事件:必須定義在open()之前
檢測XHR的readyState屬性贬丛,每次變化觸發(fā)onreadystatechange事件
readyState值:
0:未初始化撩银,open未調(diào)用
1:啟動,open已調(diào)用瘫寝,未調(diào)用send
2:發(fā)送蜒蕾,send已調(diào)用,未響應(yīng)
3:接收焕阿,接受部分?jǐn)?shù)據(jù)
4:完成,接受全部數(shù)據(jù)(主要使用)
數(shù)據(jù)響應(yīng)后首启,將屬性自動填充到xhr對象:
status:http狀態(tài)碼
statusText:http狀態(tài)碼描述
responseText:響應(yīng)主體
responseXML:響應(yīng)類型如果是text/xml或application/xml
status狀態(tài)碼:200成功暮屡,如果是304表示沒有修改,可以直接使用瀏覽器緩存版本
open(請求類型毅桃,url褒纲,是否異步請求)
send({params})發(fā)送的參數(shù),如果沒有參數(shù)xhr.send(null),比如某些get請求
發(fā)起XHR請求時默認(rèn)發(fā)送HTTP頭部:因此可以自定義頭部
默認(rèn)頭部:
Accept:瀏覽器能夠處理的內(nèi)容類型
Accept-Charset:瀏覽器能夠顯示的字符集
Accept-Encoding:瀏覽器能夠處理的壓縮編碼
Accept-Language:瀏覽器當(dāng)前設(shè)置的語言
Connection:瀏覽器與服務(wù)器之間的連接(keep-alive長連接)
Host:發(fā)出請求所在域
Referer:發(fā)出請求頁面的URI
User-Agent:瀏覽器用戶代理字段
setRequestHeader(name,value):自定義頭部钥飞,放在open之前莺掠,send之后