DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 用Msxml2進行異步信息交換的探討
用Msxml2進行異步信息交換的探討
編輯:XML詳解     

 1 引言

  XmlHttp2.0提供客戶端同http服務器異步通訊協議,客戶端可通過MsXML2對象向Web服務器發送請求並使用文檔對象模型DOM處理同應,且所有通訊都可在後台進行,擴展了Web的信息處理能力。

  2 MsXML2對象特色技術

  Msxml2(或XmlHttp)對象屬於ActiveX,使用Msxml2.XmlHttp方式創建,可注冊一個函數給XMLHttp對象的on-readystatechange方法,該對象的open方法可發出Http請求,對象的Send方法可自動調用所注冊的函數。

  2.1 使用XMLHttp抓取目標地址的Web頁面

  頁面分析的GetBody函數通過XMLHttp組件可後台獲取目標地址Web頁的內容,這種方式獲得的Web頁面結構可被應用系統後台分析。

  2.2 字符轉換

  後台獲取的Web數據往往有亂碼現象,可以使用Adodb.Stream對其進行二進制處理,SaveToFile(FileName)方法可將數據存入文件;Object.LoadFromFile(FileName)方法可以從文件中讀取數據;Object.Write(Data,[Options])將指定的文本數據裝入對象中;Object.ReadText(NumChars)讀取指定長度的文本及參數說明:NumChars指定要讀取的字符串長度,未指定則讀取全部數據。

  2.3 後台頁面保存

  後台網頁的內容可以作為Msxml2.XMLHttp對象的Re-sponse屬性返回,意味著可以使用FileSystem對象將頁面的內容保存到文件中,例如:

用Msxml2進行異步信息交換的探討

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

  保存後文檔的格式可能與網頁的格式不同,這取決於所使用樣式表的格式。多數情況下,即使格式有點缺漏,頁面也可按文本方式讀取。

2.4 跨域訪問

  跨域訪問就是A網站的JavaScript代碼試圖訪問B網站,包括提交內容和獲取內容。由於安全原因,直接跨域訪問是被浏覽器所禁止的,可以使用StreamReader對象後台獲取。

用Msxml2進行異步信息交換的探討

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

  用Msxml2進行異步信息交換的探討

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

  3 XML信息控制

  IE客戶端可通過JavaSeript命令將XML命令控制文件通過後台發送給Web偵聽頁,並獲得信息反饋。邏輯過程是:(JS)應用->偵聽頁->ActiveX控件,ActiveX控件->偵聽頁->客戶端(JS)接收,如圖1所示。

用Msxml2進行異步信息交換的探討

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

  IE客戶端發出“XML命令”的JavaScript命令典型過程:

用Msxml2進行異步信息交換的探討


 

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

  在IE客戶端,可以不用XML格式命令而使用普通文件構造指令,但使用XML格式容易解析指令及其參數,例如“Open”函數的“XML_receive.ASP”網頁被稱為偵聽頁;第3個參數決定是否異步執行;還可以再加上用戶名和口令兩個參數,此時要求進行同步查詢,即IE窗口在完成查詢前只進行等待。

  3.1 偵聽頁基本功能

  IE客戶頁面提交查詢時,通過“偵聽頁”發出XML格式指令。由XmlHttp向WWW服務器請求交互,Web服務器即解釋該命令,並調用相應ActiveX控件,以XML字符串形式將查詢結果返回給IE端用戶。偵聽頁執行的基本過程:

  (1)將查詢請求加載到XML DOM,並對指令及其參數進行解析。支持Java,Script的所有浏覽器都支持文檔對象模型(DOM)。DOM涉及W3C標准文檔的對象模型,以樹形結構表示Html和XML文檔,可以定義遍歷、檢查和修改樹節點的方法和屬性,如圖2所示。使用DOM技術可以解析XML文件中的查詢指令和參數(parameter),可以有多個參數。

  (2)根據客戶要求,調用Active X控件的處理方法,執行結果用XML字符串表示。創建Active X對象並調用預定的GetTitlesXML()方法,返回Pubs數據庫的查詢結果,結果用XML字符串方式返回。

  (3)將返回結果加載到XML DOM並用Response對象返回給IE用戶。Response對象可將結果反饋給IE用戶。具體方法是使用XML DOM的Save方法返回結果。例如,下面的程序片段中,反饋信息為XML串:resuhsXML,它通過Response對象設置輸出流格式。

用Msxml2進行異步信息交換的探討


 

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

  3.2 XML信息接收

  IE客戶端一旦接收到返回結果,就將其加載到XMLDOM,並使用XML解析方式分析信息,以獲得相應的信息。先將XmlHttp的ResponseXML信息加載到XML DOM對象中。如果出錯,可以分析“偵聽頁”返回的出錯信息;如果正確,DOM裡就有查詢結果,並可通過分析該XML文檔求得信息結果。另外XmlHttp還有responseText方法用於加載普通文件,但推薦使用XML文件格式。

  3.3 XML_SQL查詢

  對於預定的性能函數GetTitlesXML(),可以結合SQL命令加強功能,進行數據庫操作。例如,根據書籍的類型、價格和銷售日期等信息,由Form表單的信息組成SQL條件字句,在IE客戶端查詢書籍的代碼如下:

用Msxml2進行異步信息交換的探討

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

用Msxml2進行異步信息交換的探討

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

  4 結語

  總結了使用Msxml構件在客戶端和後台Web服務器之間建立通訊聯系的基本環節的實現方法,給出用戶需要的ActiveX控件的部分方法和屬性。MsXML提高得整個Web應用系統的自制性能,這為進一步實現胖B/S應用奠定了技術基礎。



 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved