直播中
其實(shí)辦法早就有很多。比如自己寫 ActiveX Control 或 Java Applets,或使用系統(tǒng)自己帶的。
如果是 IE 瀏覽器,很久以前就可以使用 ADO RDS 之類的方法從 server 端遠(yuǎn)程獲取數(shù)據(jù)。
我們現(xiàn)在看看 XML 新石器時(shí)代的幾種方法:
1. XMLHTTP
這種方法意思和 RDS 差不多,但在 XML 時(shí)代,這種方法顯得比較正經(jīng)兒。
網(wǎng)上有個(gè)比較好的例子:http://www.asptoday.com/articles/20001219.htm
Using Fat Clients For E-commerce
作者起這個(gè)名字 (Fat client) 就是說要求 browser 要支持 XMLHTTP。
代碼片斷:
Function getCategories()
Dim oXMLHTTP ' As Object
Dim oCategories ' As Object
Set oXMLHTTP = CreateObject("Microsoft.XMLHTTP")
'--- set the XMLHTTP call and issue send (no parm as category
'--- is included in URL
oXMLHTTP.open "GET",SERVER_PATH & "demo.asp?action=getcategories",False
oXMLHTTP.send
'--- load the response into the Categories data island
dsoCategories.loadXML oXMLHTTP.responseText
'--- transform into HTML and assign to innerHTML property
divCategories.innerHTML = dsoCategories.documentElement.transformNode(dsoCategoriesXSL.documentElement)
'--- tidy up the object
Set oXMLHTTP = Nothing
End Function
其實(shí)直接使用 DOMDocument.load 也是一樣的。
參見 http://www.chinaasp.com/sqlbbs/showEssence.asp?id=3586
Zee 的帖子:“在IE里應(yīng)用XML的一個(gè)小例子:解決雙下拉選單的連動(dòng)問題?!?BR>代碼片斷:
var oXMLDoc = new ActiveXObject('MSXML');
sURL = '<%=strPathInfo%>XMLCity.asp?State=' + sState;
oXMLDoc.url = sURL;
不顯性地創(chuàng)建 ActiveXObject 也可以,變通的方法是使用 <XML ID="myData">。
2. 如何支持 Netscape browser?
考慮到可以使用 XML SRC 的方式在頁面中獲得 XML data,我們可以仔細(xì)看一眼 HTML properties: SRC。
可以注意到還有個(gè)常用 tag 具備這個(gè) attribute -- IFrame。
所以我們可以使用下面的思路來從 server 獲取數(shù)據(jù),這回我們不使用 XML island, ActiveX Object,以便支持 NN。
a. 在頁面中加一個(gè)隱藏的 IFrame。
b. 需要調(diào)用數(shù)據(jù)時(shí),語句形如:IFrame.src = "http://localhost/getData?a=123"
c. 為了迎合 NN 的胃口,我們的返回值不是直接 XML Data,而是 HTML,這樣才能被 IFrame 接受
d. 但最重要的是,這個(gè) HTML Page 實(shí)際上是一個(gè) well-formed 的 XML document。比如:
<HTML>
<BODY>
<P ID="P1">abc</P>
<P ID="P2">def</P>
<P ID="P3">ghi</P>
</BODY>
</HTML>
e. 我們可以使用 client-side javascript 把這個(gè) well-formed XML Doc 中的數(shù)據(jù)抓取出來,加入到我們的 select
listbox 中。
(是在一個(gè)同事那里看到的這個(gè)思路,感覺他是劍術(shù)通神后,捻花摘葉皆是劍,何必拘泥于 XML DOM Object。)
掛一漏萬,希望大家再加上幾種方法。