[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 編程技術 > XML/WML > 正文
XML技術系列講座(10)客戶機與服務器的數據交互(下)
本文出自:http://www.computerworld.com.cn 作者: 北京郵電大學 張劍 (2002-02-11 07:15:00)
1、XMLHTTP對象的Send方法
用Open方法對Request對象進行初始化,調用Send方法發送XML數據:
poster.send XML-data
Send方法的參數類型是Variant,可以是字符串、DOM樹或任意數據流。發送數據的方式分為同步和異步兩種。在異步方式下,數據包一旦發送完畢,就結束Send進程,客戶機執行其他的操作;而在同步方式下,客戶機要等到服務器返回確認消息才結束Send進程。
XMLHTTP對象中的readyState屬性能夠反映出服務器在處理請求時的進展狀況。客戶機的程序可以根據這個狀態信息設置相應的事件處理方法。屬性值及其含義如下表所示:
說明
0 Response對象已經創建,但XML文檔上載過程尚未結束
1 XML文檔已經裝載完畢
2 XML文檔已經裝載完畢,正在處理中
3 部分XML文檔已經解析
4 文檔已經解析完畢,客戶端可以接受返回消息
2、 服務器端的數據處理
服務器在接收到客戶機發送過來的數據包,會馬上處理數據,並做出相應的響應。服務器先創建一個XMLDOM對象,然將Request對象中的數據載入,並通過XMLDOM對象開始訪問XML數據。
在獲得XML數據的訪問入口,首先做的事情是對XML文檔進行驗証(這部分的具體過程我們將在面介紹XML Schema的時候一並說明)。一旦通過驗証,就可以利用DOM接口對XML數據進行分析處理(例如:將提取的信息用來更新數據庫中的記錄)。
一個簡單的ASP腳本如下:
<%
Set docReceived = CreateObject(“Microsoft.XMLDOM”)
docReceived.async = False
docReceived.load Request
Set rootNode = docReceived.documentElement
Set nodeCustomer = docReceived.selectSingleNode(“//customer”)
customerID = nodeCustomer.firstChild.nodeValue
……
%>
3、服務器端的響應消息
服務器在處理完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>
<% Next %>
服務器採用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” %>
<confirmation>
<errorcode>0</errorcode>
<shipped>
<% For Each node In listOrderitem
title = node.getAttribute(“title”)
Set quantityNode = node.selectSingleNode(“quantity”)
Quantity = quantityNode.firstChild.nodeValue %>
<item title=“<%=title%>” quantity=“<%=quantity%>” />
<% Next %>
</shipped>
</confirmation>
4、客戶機處理響應信息
客戶機接收到返回消息,進行簡單的處理,基本上就完成了C/S之間的一個交互周期。客戶機接收響應是通過XMLHTTP對象的屬性實現的:
● responseTxt:將返回消息作為文本字符串;
● responseXML:將返回消息視為XML文檔,在服務器響應消息中含有XML數據時使用;
● responseStream:將返回消息視為Stream對象。
HTML頁面的返回消息一般是被作為文本字符串進行處理。下面的這個例子是一個完整的交互過程,客戶機腳本的代碼如下:
<DIV ID=“displayArea”> </DIV>
<SCRIPT LANGUAGE=“VBScript”>
Sub Submit_OnClick()
’創建XMLDOM
Set docSubmit = CreateObject(“Microsoft.XMLDOM”)
……’如前所述構造數據包
’向服務器發送數據包
Set poster = CreateObject(“Microsoft.XMLHTTP”)
poster.open “POST”, “CustomerOrder.asp”, False
poster.send docSubmit
’接收Resoponse消息
displayArea.innerHTML = poster.responseText
End Sub
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)

===更多相關===
 

★  樊強制作 歡迎分享  ★