Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 11 章 XML資料的傳遞 –XmlHttpRequest物件

Similar presentations


Presentation on theme: "第 11 章 XML資料的傳遞 –XmlHttpRequest物件"— Presentation transcript:

1 第 11 章 XML資料的傳遞 –XmlHttpRequest物件

2 簡介XmlHttpRequest - 什麼是XmlHttpRequest
MSXML提供的HttpRequest物件可以協助使用者用很簡單的方式,建立HTTP連結,並以XML做為傳遞資料的格式。

3 簡介XmlHttpRequest - HttpRequest物件的屬性與方法
readyState(唯讀) 顯示目前HTTP連結狀態的長整數,下表將說明各數值代表的意義。

4 簡介XmlHttpRequest - HttpRequest物件的屬性與方法
responseBody(唯讀) 以無正負號的位元組陣列形式,傳回伺服器的回應。 responseStream(唯讀) 以Istream物件的形式,傳回伺服器的回應。 responseText(唯讀) 以字串的形式,傳回伺服器的回應。 responseXML(唯讀) 以XML DOM物件的形式,傳回伺服器的回應。

5 簡介XmlHttpRequest - HttpRequest物件的屬性與方法
status(唯讀) 取得HTTP連結的回應狀態碼,傳回200代表伺服器已正常回應。 statusText(唯讀) 取得HTTP連結的回應狀態文字,當伺服器正常回應時,將傳回OK。 onreadystatechange(可讀寫) 設定當readyState屬性改變時,回應此事件的程序。此屬性專為IE的Script語言設計,無法使用於其他語言。

6 簡介XmlHttpRequest - HttpRequest物件的屬性與方法
status(唯讀) 取得HTTP連結的回應狀態碼,傳回200代表伺服器已正常回應。 statusText(唯讀) 取得HTTP連結的回應狀態文字,當伺服器正常回應時,將傳回OK。 onreadystatechange(可讀寫) 設定當readyState屬性改變時,回應此事件的程序。此屬性專為IE的Script語言設計,無法使用於其他語言。

7 簡介XmlHttpRequest - HttpRequest物件的屬性與方法
以下是HttpRequest物件的方法介紹。 abort() 說明:取消目前的HTTP請求。呼叫後,readyState屬性將傳回0(UNINITIALIZED)。若欲再發出請求,必須再次呼叫send()方法。

8 簡介XmlHttpRequest - HttpRequest物件的屬性與方法
以下是HttpRequest物件的方法介紹。 abort() 說明:取消目前的HTTP請求。呼叫後,readyState屬性將傳回0(UNINITIALIZED)。若欲再發出請求,必須再次呼叫send()方法。 getAllResponseHeaders() 說明:取得HTTP請求的所有標頭內容。

9 簡介XmlHttpRequest - HttpRequest物件的屬性與方法
getResponseHeader(標頭名稱) 說明:取得HTTP請求特定標頭的內容。 open(方法, 位址, 是否同步, 使用者名稱, 使用者密碼) 說明:字串內容為HTTP請求的所有標頭內容。 send(請求訊息) 說明:送出HTTP連結請求。回應時,將預設使用UTF-8為編碼格式。 setRequestHeader(標頭名稱, 值) 說明:設定HTTP連結請求的自訂標頭。

10 簡介XmlHttpRequest - HTTP連結的請求與回應

11 簡介XmlHttpRequest - HTTP連結的請求與回應
欲開啟HTTP連結時,需呼叫XMLHttp物件的open()方法,語法如下: XMLHttp物件.open(方法, 位址, 是否同步, 使用者名稱, 使用者密碼) 沒有回傳值。

12 簡介XmlHttpRequest - HTTP連結的請求與回應
欲開啟HTTP連結時,需呼叫XMLHttp物件的open()方法,語法如下: XMLHttp物件.open(方法, 位址, 是否同步, 使用者名稱, 使用者密碼) 沒有回傳值。 以下敘述將運用xmlHttp物件,以GET方法開啟與 間的HTTP連結,並以不同步方式連結。

13 簡介XmlHttpRequest - HTTP連結的請求與回應
開啟後,呼叫send()方法,將可送出Http請求,語法如下: XMLHttp物件.send(請求訊息) 沒有回傳值。 以下敘述將向xmlHttp物件所開啟的連結,送出HTTP請求,但並不送出資料。

14 簡介XmlHttpRequest - HTTP連結的請求與回應
開啟後,呼叫send()方法,將可送出Http請求,語法如下: XMLHttp物件.send(請求訊息) 沒有回傳值。 以下敘述將向xmlHttp物件所開啟的連結,送出HTTP請求,但並不送出資料。 送出請求後,可透過XMLHttp物件的status屬性取得伺服器回應的狀態碼,回應的狀態訊息,則可透過statusText屬性取得。

15 簡介XmlHttpRequest - 標頭的取得與自訂
欲取得回應的HTTP訊息之標頭,則必須呼叫getAllResponseHeaders()方法與getResponseHeader()方法。 呼叫getAllResponseHeaders()方法可取得回應之HTTP訊息的所有標頭內容,語法說明如下: XMLHttp物件.getAllResponseHeaders() 回傳值為所有標頭內容的字串。 欲取得特定標頭時,則可呼叫getResponseHeader()方法語法說明如下: XMLHttp物件.getResponseHeader(標頭名稱) 回傳值為欲取得之特定標頭內容的字串。

16 簡介XmlHttpRequest - 標頭的取得與自訂
除了HTTP訊息的標準標頭外,XMLHttp物件還提供了setRequestHeader()方法,讓我們可以在HTTP訊息內,加入自訂標頭,以提供伺服器更多有關此HTTP請求的資訊。 在下一章有關SOAP與遠端程序呼叫的應用上,您將可看到這樣的應用。請注意!執行自訂標頭動作的時機,必須在呼叫XMLHttp物件開啟HTTP連結後,送出HTTP請求前。 以下是呼叫setRequestHeader()方法的語法: XMLHttp物件.setRequestHeader(標頭名稱, 值) 此方法無回傳值。

17 簡介XmlHttpRequest - 標頭的取得與自訂
除了HTTP訊息的標準標頭外,XMLHttp物件還提供了setRequestHeader()方法,讓我們可以在HTTP訊息內,加入自訂標頭,以提供伺服器更多有關此HTTP請求的資訊。 執行自訂標頭動作的時機,必須在呼叫XMLHttp物件開啟HTTP連結後,送出HTTP請求前。 以下是呼叫setRequestHeader()方法的語法: XMLHttp物件.setRequestHeader(標頭名稱, 值) 此方法無回傳值。 以下敘述將自訂名稱為myHeader的標頭,其值為『Hello World!』。

18 簡介XmlHttpRequest - 標頭的取得與自訂
若在伺服端欲取得自訂標頭,必須使用ASP的Request物件的ServerVariables()方法,語法如下: Request.ServerVariables(自訂標頭名稱) 回傳值為取得之自訂標頭的值。 以下敘述將透過Request物件的ServerVariables()方法,取得客戶端傳送過來,名稱為myHeader的自訂標頭。

19 以XML交換資料 - 資料交換過程 資料交換過程

20 以XML交換資料 - 以GET方法取得伺服端回應的XML文件
客戶端可以透過responseXML屬性取得儲存回傳XML文件的DOM物件,從responseText屬性取得伺服端回傳資料的字串內容,就沒有什麼需要注意的地方。 伺服端就不一樣,您要留意回應字串的格式(回應的是字串不是物件),是否符合XML格式的要求,若不符合,則將無法透過responseXML屬性,取得儲存回傳XML資料的DOM物件(記得取得的是物件,不是字串)。

21 以XML交換資料 - 以GET方法取得伺服端回應的XML文件
當希望客戶端可以透過responseXML屬性,取得DOM物件時,在ASP網頁內,必須注意以下兩點: 一、指定Response物件的ContentType屬性為『text/xml』 二、輸出指定編碼格式的文件宣告

22 以XML交換資料 - 以GET方法取得伺服端回應的XML文件
當希望客戶端可以透過responseXML屬性,取得DOM物件時,在ASP網頁內,必須注意以下兩點: 一、指定Response物件的ContentType屬性為『text/xml』 二、輸出指定編碼格式的文件宣告

23 以XML交換資料 - 以GET方法取得伺服端回應的XML文件
從DOM物件取得XML文件的內容時,要避免使用以下這樣的敘述。 而應該改用以下這個敘述,確保不會輸出文件宣告。

24 以XML交換資料 - 以GET方法取得伺服端回應的XML文件
除錯的獨家秘方 Response物件的Expires屬性,用於控制客戶端瀏覽器暫存網頁資料的時間,設為0則瀏覽器不暫存資料,可避免程式除錯時,因客戶端暫存了之前傳回的資料,導致無法正確顯示回應訊息的問題。 Response物件的charSet屬性,用於控制回傳訊息使用的字元集,設定為Big5後(還記得嗎?XMLHttp物件的預設編碼為UTF-8),由XMLHttp物件responseText屬性取得的回應字串,才不會是一堆亂碼。而ASP網頁執行時,發生的錯誤訊息,也才能正確顯示,以提供您除錯的參考。 為了除錯的方便,請再ASP網頁內加上以下兩行敘述。

25 以XML交換資料 - 以GET方法取得伺服端回應的XML文件
直接取得伺服端的XML文件 您也可以運用XMLHttp物件的open()方法,開啟伺服端XML文件的URL位址,直接取得XML資料。

26 以XML交換資料 - 以GET方法取得伺服端回應的XML文件
直接取得伺服端的XML文件 您也可以運用XMLHttp物件的open()方法,開啟伺服端XML文件的URL位址,直接取得XML資料。

27 以XML交換資料 - 以POST方法將XML文件送至伺服端
伺服端如何取得資料 客戶端欲送出XML資料時,可以使用send()方法,載入欲傳遞XML資料的DOM物件,在發出HTTP請求時,送至伺服端。

28 以XML交換資料 - 以POST方法將XML文件送至伺服端
以下敘述便以send()方法,將儲存欲傳遞XML資料的DOM物件(名為objDOM),送至伺服端。 而傳遞至伺服端的XML DOM物件,將可透過Request物件取得。方法為呼叫DOM物件的load()方法,從Request物件載入DOM物件。


Download ppt "第 11 章 XML資料的傳遞 –XmlHttpRequest物件"

Similar presentations


Ads by Google