欢迎光临
我们一直在努力

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

建站超值云服务器,限时71元/月

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

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

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 利用XML不离开页面刷新数据
分享到: 更多 (0)