GB | BIG5
|
| 首頁 > 編程技術 > XML/WML > 正文 |
 |
| XML技術系列講座(10)客戶機與服務器的數據交互(下) |
| 本文出自:http://www.computerworld.com.cn 作者: 北京郵電大學 張劍 (2002-02-11 07:15:00) |
|
用Open方法對Request對象進行初始化,調用Send方法發送XML數據: |
|
Send方法的參數類型是Variant,可以是字符串、DOM樹或任意數據流。發送數據的方式分為同步和異步兩種。在異步方式下,數據包一旦發送完畢,就結束Send進程,客戶機執行其他的操作;而在同步方式下,客戶機要等到服務器返回確認消息才結束Send進程。 |
|
XMLHTTP對象中的readyState屬性能夠反映出服務器在處理請求時的進展狀況。客戶機的程序可以根據這個狀態信息設置相應的事件處理方法。屬性值及其含義如下表所示: |
| 值 |
說明 |
| 0 |
Response對象已經創建,但XML文檔上載過程尚未結束 |
| 1 |
XML文檔已經裝載完畢 |
| 2 |
XML文檔已經裝載完畢,正在處理中 |
| 3 |
部分XML文檔已經解析 |
| 4 |
文檔已經解析完畢,客戶端可以接受返回消息 |
|
|
服務器在接收到客戶機發送過來的數據包,會馬上處理數據,並做出相應的響應。服務器先創建一個XMLDOM對象,然將Request對象中的數據載入,並通過XMLDOM對象開始訪問XML數據。 |
|
在獲得XML數據的訪問入口,首先做的事情是對XML文檔進行驗証(這部分的具體過程我們將在面介紹XML Schema的時候一並說明)。一旦通過驗証,就可以利用DOM接口對XML數據進行分析處理(例如:將提取的信息用來更新數據庫中的記錄)。 |
|
Set docReceived = CreateObject(“Microsoft.XMLDOM”) |
|
docReceived.async = False |
|
Set rootNode = docReceived.documentElement |
|
Set nodeCustomer = docReceived.selectSingleNode(“//customer”) |
|
customerID = nodeCustomer.firstChild.nodeValue |
|
服務器在處理完XML數據之,構造響應消息,並返回給客戶機。消息的形式可以是純文本、HTML頁面、XML文檔或者是嵌有XML數據島的HTML頁面。 |
|
首先來看一個HTML頁面的例子,這個消息頁面中包含了客戶訂購的信息: |
|
<H3>Confirmation of order</H3> |
|
<% For Each node In listOrderitem |
|
title = node.getAttribute(“title”) |
|
Set quantityNode = node.selectSingleNode(“quantity”) |
|
Quantity = quantityNode.firstChild.nodeValue %> |
|
<P> <%=title%>, <%=quantity%> </P> |
|
服務器採用XML文檔作為返回消息的優點是:客戶機可以利用智能程序對結構化的消息進行分析,能夠更準確地理解服務器所要表達的信息。 |
|
Set docResponse = CreateObject(“Microsoft.XMLDOM”) |
|
docResponse.async = False |
|
docResponse.load “MyFixedResponse.xml” |
|
Response.ContentType =“text/xml” |
|
Response.save docResponse |
|
在使用XML文檔時,必須在填寫Response內容之前將ContentType屬性值指明為“text/xml”,表示響應消息的格式為XML。save方法的用途是將XML文檔內容填充到Response對象中。 |
|
除了可以裝載已存在的XML文檔,還可以實時構造XML數據作為響應內容: |
|
<% Response.ContentType=“text/xml” %> |
|
<% For Each node In listOrderitem |
|
title = node.getAttribute(“title”) |
|
Set quantityNode = node.selectSingleNode(“quantity”) |
|
Quantity = quantityNode.firstChild.nodeValue %> |
|
<item title=“<%=title%>” quantity=“<%=quantity%>” /> |
|
客戶機接收到返回消息,進行簡單的處理,基本上就完成了C/S之間的一個交互周期。客戶機接收響應是通過XMLHTTP對象的屬性實現的: |
|
● responseTxt:將返回消息作為文本字符串; |
|
● responseXML:將返回消息視為XML文檔,在服務器響應消息中含有XML數據時使用; |
|
● responseStream:將返回消息視為Stream對象。 |
|
HTML頁面的返回消息一般是被作為文本字符串進行處理。下面的這個例子是一個完整的交互過程,客戶機腳本的代碼如下: |
|
<DIV ID=“displayArea”> </DIV> |
|
<SCRIPT LANGUAGE=“VBScript”> |
|
Set docSubmit = CreateObject(“Microsoft.XMLDOM”) |
|
Set poster = CreateObject(“Microsoft.XMLHTTP”) |
|
poster.open “POST”, “CustomerOrder.asp”, False |
|
displayArea.innerHTML = poster.responseText |
|
Submit_OnClick方法首先創建XMLDOM對象用來裝載XML數據,然創建XMLHTTP對象以同步方式將數據包發送給服務器。在服務器處理完畢之返回一個HTML頁面作為響應消息。XMLHTTP對象按照文本字符串方式接收消息,並把它與DIV元素綁定起來,在瀏覽器中顯示最終結果。 |
|
響應XML數據的基本過程與上面的這個例子是一樣的,只是在接收時,使用responseXML屬性,然利用DOM技術對XML消息做進一步的處理。這樣,一個完整的C/S交互過程就全部結束了。 |
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
XML技術系列講座(13)XML與電子商務 (2002-02-13 06:15:00) XML技術系列講座(12)驗証XML數據合法性(下) (2002-02-12 07:15:00) XML技術系列講座(11)驗証XLM數據合法性(上) (2002-02-12 06:15:00) XML技術系列講座(10)客戶機與服務器的數據交互(下) (2002-02-11 07:15:00) XML技術系列講座(9)客戶機與服務器的數據交互(上) (2002-02-11 06:15:00) XML技術系列講座(8)通過DOM操作數據(下) (2002-02-10 07:20:01) XML技術系列講座(7)通過DOM操作數據(上) (2002-02-09 07:20:00) XML技術系列講座(6)XML與HTML的結合(下) (2002-02-08 07:15:00) XML技術系列講座(5)XML與HTML的結合(上) (2002-02-08 06:15:00) XML技術系列講座(4)XML的顯示XSL樣式單(下) (2002-02-07 07:15:01)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |