XMLHttpRequest物件
一、XMLHttpRequest物件
##1.Ajax能夠是實現異步傳輸,所依賴的就是JavaScript中的XMLHttpRequest2.XMLHttpRequest對像是XMLHttp元件的對象,它是一個抽象對象,允許腳本從伺服器取得傳回的eXML資料或將資料傳送到伺服器端3.XMLHttpRequest可以實現客戶端與伺服器只進行資料層面的交互,不必每次刷新頁面4.XMLHttpRequest最早在Microsoft Internet Explorer5.0中作為一個ActiveX控件提供,後受到廣泛應用5.在使用XMLHttpRequest發送請求和處理對應之前需要先建立一個XMLHttpRequest物件
6.XMLHttpRequest不是W3C標準,可採用多種方法用JavaScript來建立XMLHttpRequest實例7.在IE中XMLHttpRequest實作為一個ActiveX控件,而其他瀏覽器則實作為一個JavaScript內建物件
#二、XMLHttpRequest物件建立eaea58db2af5d43982d9104387dffa1a 三、XMLHttpRequest物件屬性(接收並顯示目前狀態)1.readySate-記錄傳回請求的狀態。 0-為初始化:物件已經建立,單位初始化,open方法還未呼叫;
。 1-初始化:物件已經建立,但還未呼叫send方法發送請求;
。 2-發送資料:send方法已調用,但HTTP頭未知;
。 3-數據傳輸中:已經接受部分數據,但回應不完全;
。 4-完成:資料接受完成,此時才可以取得完整的回傳資料
2.responseText-接收客戶端的HTTP回應的文字內容。只讀。當readySate為1/2,responseText值是一個空字串;
。當readyState為3,回應訊息正在接受還未完成;
。當readyState為4,表示可以回應訊息已經接收完成
。 xmlHttp預設回應資料編碼為UTF-8
3.responseXML-在send()執行後,將傳回的訊息格式化為XML Document物件#。 Content-Type指定的MIME類型應該是text/HTML
。如果Content-Type不包含這種類型,responseXML在接收時將會得到一個null值
4.status-在send()執行後,可使用status讀取事物狀態。長整型資料
。傳回目前請求的HTTP的狀態碼
。只有當readyState為3或4時才使用該屬性,否則讀取status會發生錯誤
。 100-客戶必須繼續發送請求
。 200-交易成功
。 400-錯誤請求
。 403-請求不允許
。 404-沒有發現檔案、查詢、URL
。 500-伺服器內部錯誤
。 502伺服器暫時無法使用
。 505-伺服器不支援或拒絕不支援請求頭中的HTTP版本
5.statusText-send()執行後,可透過statusText讀取事物狀態
。傳回目前HTTP請求的狀態行
。只有當readyState為3或4時才可使用該屬性,否則讀取state會發生錯誤
6.Onreadystatechange-readyState發生變更時所要執行的動作
#。通常將處理函數名稱賦予onreadystatechange來為XMLHttpRequest物件指定事件處理
。在事件處理函數中根據readyState的狀態值進行對應的處理
。範例:
function test(){ xmlHttp.onreadystatechange=showInfo; var url=”/ajax/urlInfo”;//请求路径 xmlHttp.open(“GET”,url,true); xmlHttp.send(null); } Function showInfo(){ If(xmlHttp.readyState==4){ alert(“success”); } }
四、XMLHttpRequest物件方法(動態處理各種資訊:資料的傳送與接收、請求與回應的處理等)
1.abort()-終止目前操作
。停止XMLHttpRequest物件對HTTP的請求,把該物件恢復到初始狀態
2.open()-xmlHttp.open(method,url,mode,user,pwd)
。建立一個新的HTTP請求,並指定該請求的方法、URL、驗證資訊等
#。 method:POST、GET、PUT(可忽略大小寫)
。 url:請求的目標位址
。 mode:指定請求是否為非同步,預設true;當為true時,當state的狀態改變時會呼叫onreadystatechange屬性所指定的處理函數
。呼叫open()後,XMLHttpRequest物件將readyState屬性設為1並恢復responseText、responseXML、status、statusText等屬性的初始值,且重設請求頭部資訊
呼叫 #open()時,readyState為4,則XMLHttpRequest物件將重設以上的值
3.send()-xmlHttp.send(content)
。發送請求到伺服器並接受回應
4.setRequestHeader()-setRequestHeader(header,value)
。單獨設定某個請求的HTTP頭資訊
。當readyState為1時,可在send()後呼叫此方法,否則傳回一個異常
。如果已經存在該名稱的HTTP頭,則將原始資訊覆寫
。 header-頭名稱:字串型
。 value-頭名稱的值:字串型
5.getResponseHeader()-讀取伺服器發出訊息的頭部
。 HEAD請求忽略內容,所以其回應比對GET或POST回應小
取得內容:
。 Content-Type:內容類型
。 Content-Length:內容長度
。 Last-Modify:最後一次修改的日期
#。例:function getHeadInfo(){
if(xmlHttp.readyState==4){ if(headeyType==”Content-Type”){ window.alert(“Content-Type:”+xmlHttp.getResponseHeader(“Content-Type”); } else if(headType==”Content-Length”){ window.alert(“Content-Length:”+xmlHttp,getResponseHeader(“Content-Length”); } else if(headType==”Last-Modify”){ window.alert(“Last-Modify:”+xmlHttp.getResponseHeader); } } }
。在獲取頭部資訊時,並不是所有資訊都能取得
6.getAllResponseHeaders()-取得所有頭部資訊
。在获取时只用HEAD即可获取
。例:fuction headRequest(){
creatXMLHttpRequest(); xmlHttp.onreadystatechange=getHeadInfo; xmlHttp.open(“HEAD”,”url”,false); xmlHttp.send(null); } function getHeadInfo(){ if(readyState==4){ Alter(xmlHttp.getAllResponseHeaders()); }
以上是XMLHttpRequest物件中關於Ajax非同步請求的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!