当前位置: 首页 > 图文教程 > 网络编程 > ASP > 利用XML不离开页面刷新数据

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

ASP 中的 利用XML不离开页面刷新数据


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 24 ::
收藏到网摘: n/a

  开门见山,不离开页面就能刷新页面中的(部分)数据好处多多。主要是不需要写无聊代码维护 state。ASP.NET (以及其雏形 VI6 SOM)中的 server-side control (VI6 DTC, Script Library) 通过大量hidden input 来维护页面 state,其功力之深,非吾辈能及。所以我们要想办法不离开页面就能得到
新数据,这样生活会比较好过。

其实办法早就有很多。比如自己写 ActiveX Control 或 Java Applets,或使用系统自己带的。如果是 IE 浏览器,很久以前就可以使用 ADO RDS 之类的方法从 server 端远程获取数据。我们现在看看 XML 新石器时代的几种方法:

1. XMLHTTP
这种方法意思和 RDS 差不多,但在 XML 时代,这种方法显得比较正经儿。
网上有个比较好的例子:http://www.asptoday.com/articles/20001219.htm
Using Fat Clients For E-commerce 作者起这个名字 (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

其实直接使用 DOMDocument.load 也是一样的。
参见 http://www.chinaasp.com/sqlbbs/showEssence.asp?id=3586
Zee 的帖子:“在IE里应用XML的一个小例子:解决双下拉选单的连动问题。”
代码片断:
var oXMLDoc = new ActiveXObject('MSXML');
sURL = '<%=strPathInfo%>XMLCity.asp?State=' + sState;
oXMLDoc.url = sURL;

不显性地创建 ActiveXObject 也可以,变通的方法是使用 <XML ID="myData">。

2. 如何支持 Netscape browser?
考虑到可以使用 XML SRC 的方式在页面中获得 XML data,我们可以仔细看一眼 HTML properties: SRC。可以注意到还有个常用 tag 具备这个 attribute -- IFrame。所以我们可以使用下面的思路来从 server 获取数据,这回我们不使用 XML island, ActiveX Object,以便支持 NN。a. 在页面中加一个隐藏的 IFrame。b. 需要调用数据时,语句形如:IFrame.src  "http://localhost/getData?a=123"
c. 为了迎合 NN 的胃口,我们的返回值不是直接 XML Data,而是 HTML,这样才能被 IFrame 接受d. 但最重要的是,这个 HTML Page 实际上是一个 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 把这个 well-formed XML Doc 中的数据抓取出来,加入到我们的 select listbox 中。

(是在一个同事那里看到的这个思路,感觉他是剑术通神后,捻花摘叶皆是剑,何必拘泥于 XML DOM Object。)


挂一漏万,希望大家再加上几种方法。
 '