您的位置:首页技术开发ASP技巧 → 不离开页面刷新数据

不离开页面刷新数据

时间:2004/11/7 4:10:00来源:本站整理作者:蓝点我要评论(0)

开门见山,不离开页面就能刷新页面中的(部分)数据好处多多。主要是不需要写无聊代码维护 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 也可以,变通的方法是使用



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。比如:

   

   

   

abc



   

def



   

ghi



   

   

  e. 我们可以使用 client-side javascript 把这个 well-formed XML Doc 中的数据抓取出来,加入到我们的 select listbox 中。



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





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


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案