title: 《鋒利的jQuery》八、XMLHttpRequest對(duì)象
date: 2017-08-15 21:35:00
tags: 鋒利的jQuery
XMLHttpRequest
對(duì)象是Ajax的核心,它有許多的屬性何恶、方法和事件以便于js處理和控制HTTP的請(qǐng)求與響應(yīng)。
readyState屬性
當(dāng)一個(gè)XMLHttpRequest被創(chuàng)建后嚼黔,通過(guò)readyState屬性可以查看此次請(qǐng)求的狀態(tài)细层。
值 | 說(shuō)明 |
---|---|
0 | 初始化狀態(tài):此時(shí),已經(jīng)創(chuàng)建了一個(gè)XMLHttpRequest 對(duì)象唬涧,但是沒(méi)有初始化疫赎。 |
1 | 準(zhǔn)備發(fā)送狀態(tài):已經(jīng)調(diào)用了open() 方法,并且XMLHttpRequest 對(duì)象已經(jīng)準(zhǔn)備好將一個(gè)請(qǐng)求發(fā)送到服務(wù)器碎节。 |
2 | 已發(fā)送狀態(tài):已經(jīng)通過(guò)send() 方法把一個(gè)請(qǐng)求發(fā)送到服務(wù)器端捧搞。 |
3 | 正在接受狀態(tài):已經(jīng)接到HTTP的響應(yīng)頭部信息,但是消息體部分還沒(méi)有完全接收到狮荔。 |
4 | 完成響應(yīng)狀態(tài):已經(jīng)完成了HttpResponse 響應(yīng)的接收胎撇。 |
responseText屬性
包含客戶端接收到的HTTP響應(yīng)的文本內(nèi)容。readyState
為0殖氏、1创坞、2時(shí)是一個(gè)空字符串,readyState
為3時(shí)響應(yīng)中包含客戶端還未完成的響應(yīng)信息受葛,readyState
為4時(shí)才是完整的信息题涨。
responseXML屬性
只有當(dāng)readyState
為4時(shí)偎谁,并且響應(yīng)頭部的Content-Type的MIME類型被指定為XML(text/xml)時(shí),該屬性才會(huì)有值并且被解析為一個(gè)XML文檔纲堵。
status屬性
描述了HTTP的狀態(tài)碼巡雨,只有在readyState
為3或者4時(shí)才可以使用該屬性,否則會(huì)報(bào)錯(cuò)席函。
statusText屬性
和上面相同铐望,只是描述了HTTP的狀態(tài)碼文本,而不只是狀態(tài)碼茂附。
open()方法
XMLHttpRequest
對(duì)象是通過(guò)調(diào)用open()
方法來(lái)進(jìn)行初始化工作的正蛙。調(diào)用該方法將得到一個(gè)可以用來(lái)進(jìn)行發(fā)送的對(duì)象。
該方法有五個(gè)參數(shù) open(method,uri,async,username,password)
营曼。
method
:該參數(shù)是必須提供的乒验,用于確定GET
發(fā)送還是POST
發(fā)送,該參數(shù)要大寫蒂阱。uri
:用于指定XMLHttpRequest
對(duì)象把請(qǐng)求發(fā)送到的服務(wù)器相應(yīng)的URI锻全。async
:用于指定是否請(qǐng)求是異步的,默認(rèn)值是true
录煤,發(fā)送同步請(qǐng)求需要設(shè)置為false
鳄厌。如果服務(wù)器要驗(yàn)證訪問(wèn)用戶的情況,那么可以設(shè)置
username
及password
妈踊。
send()
調(diào)用send()
方法可以將open()
方法設(shè)定的參數(shù)請(qǐng)求進(jìn)行發(fā)送了嚎。send()
方法在readyState
屬性值為1時(shí),即是在open()
之后才可以調(diào)用廊营。
send()
的參數(shù)可以作為POST方式發(fā)送的參數(shù)歪泳,在調(diào)用send()
之前,先使用setRequestHeader()
方法設(shè)置Content-Type
的頭部赘风。
abort()方法
該方法可以暫停一個(gè)HttpRequest
的請(qǐng)求發(fā)送或者HttpResponse
的接收,并將XMLHttpRequest
設(shè)置為初始化狀態(tài)纵刘。
setRequestHeader()方法
用來(lái)設(shè)置頭部信息邀窃,當(dāng)readyState
屬性值為1時(shí),可以在調(diào)用open()
方法后調(diào)用這個(gè)方法假哎,該方法的格式為:setRequestHeader(header, value)
瞬捕。
getRequestHeader()方法
檢索響應(yīng)的頭部值,僅當(dāng)readyState
值為3或者4時(shí)才可以調(diào)用這個(gè)方法舵抹,否則會(huì)返回一個(gè)空字符串肪虎。