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

ASP
构建你的网站新闻自动发布系统之三
构建你的网站新闻自动发布系统之四
如何用ASP编写网站统计系统一
如何用ASP编写网站统计系统二
如何用ASP编写网站统计系统三
如何用ASP编写网站统计系统四
ASP Error 0115的一些解决办法
ASP 3.0 新特色先睹为快(一)
ASP 3.0 新特色先睹为快(二)
ASP主件中的安全问题
一个汉字转成拼音的代码
使用w3Sockets组件实现域名查询功能
ASP中实现文件上传方法的研究
构建免受FSO组件威胁虚拟主机
用XMLHTTP做一个自己特色的Google
用asp实现的代码批量修改程序
无组件的数据库的备份与还原
用ASPJPEG组件制作图片的缩略图和加水印
解密ASP源代码
XmlHttp异步获取网站数据的例子

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 106 ::
收藏到网摘: 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。)


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