惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
月光博客
月光博客
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
罗磊的独立博客
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
量子位
雷峰网
雷峰网
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
博客园 - 聂微东
V
V2EX

博客园 - 铁小外

ORACLE 表空间收缩 ASP 链接 ORACLE 9i 的问题 ASP XML 编程简介 XML 编程简介 实例演练ASP+XML编程 使用XmlHttp结合ASP实现网页的异步调用 利用XMLHTTP无刷新自动实时更新数据 在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP 构造 OLAP 报表应用 XML技术实现OWC对数据库的展示 五月事情很多 QMS 模块修改技术方案 oracle函数 让人十分受用的五句话(转贴) Oracle Sql 的优化 WEBS上自动下载控件的实现方法 必去的十大编程网站 SCM部分,事情很多。 OPS 你真的很不厚道! ORACLE 性能调整后,INV920运行时间从40分钟降到6分钟
在IE里应用XML的一个小例子:解决双下拉选单的连动问题。
铁小外 · 2006-05-13 · via 博客园 - 铁小外
在IE里应用XML的一个小例子:解决双下拉选单的连动问题。    

废话少说,就以选取省份后改变城市选项为例,
省份、城市数据存放于后台MSSQL Server,就一个表:Citys:字段State、City。
看程序:


CitySelect.asp
<%@ LANGUAGE="vbscript" %>
<%
    strPathInfo = Request.ServerVariables("PATH_INFO")
    strPathInfo = "http://" & Request.ServerVariables("SERVER_NAME") & Left(strPathInfo,InstrRev(strPathInfo,"/"))
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Provider = "sqloledb"
    Conn.Open "Data Source=ServerName;Initial Catalog=dbName;", "sa", ""
    Set RS = Conn.Execute("SELECT DISTINCT state FROM citys")
    arrPr = RS.GetRows()
    RS.Close
    Set RS = Nothing
    Conn.Close
    Set Conn = Nothing
%>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<TITLE></TITLE>
<SCRIPT language=javascript>
<!--
function ChooseCity()
{
//Clear City List
    for(var i=form1.SelCity.options.length-1;i>=0;--i)
    {
        form1.SelCity.options.remove(i)
    }
    var sState = form1.SelState.options(form1.SelState.selectedIndex).value;
    var oXMLDoc = new ActiveXObject('MSXML');
    sURL = '<%=strPathInfo%>XMLCity.asp?State=' + sState;
    oXMLDoc.url = sURL;
    var oRoot=oXMLDoc.root;
    if(oRoot.children != null)
    {
        for(var i=0;i<oRoot.children.length;++i)
        {
            oItem = oRoot.children.item(i);
            sName = oItem.text;
            var oOption = document.createElement('OPTION');
            oOption.text = sName;
            oOption.value = sName;
            form1.SelCity.options.add(oOption);
        }
    }
}
-->
</SCRIPT>
</HEAD>
<BODY>
<FORM action="" method="post" id="form1" name="form1">
<SELECT name="SelState" id="SelState" onchange="ChooseCity()">
<%For i = LBound(arrPr,2) To UBound(arrPr,2)%>
    <OPTION value="<%=arrPr(0,i)%>"><%=arrPr(0,i)%></OPTION>
<%Next%>
</SELECT>
<SELECT name="SelCity" id="SelCity">
</SELECT>
</FORM>
</BODY>
</HTML>


XMLCity.asp
<%@ LANGUAGE="VBSCRIPT" %>
<%
    sState = Request.QueryString("State")
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Provider = "sqloledb"
    Conn.Open "Data Source=ServerName;Initial Catalog=dbName;", "sa", ""
    Set RS = Conn.Execute("SELECT city FROM citys WHERE state='" & sState & "'")
    arrCity = Rs.GetRows()
%>
<?xml version="1.0" encoding="gb2312" ?>
<citys>
<%For i = LBound(arrCity,2) To UBound(arrCity,2)%>
<city><%=arrCity(0,i)%></city>
<%Next%>
</citys>


几点说明:
1、简单的说,这种方法就是利用客户端MSXMl对象去load一个xml,而这个xml文件的后缀是asp,呵呵,传个querysting过去就可以为所欲为了,好处是显然的:页面不刷新;传输的数据少,不需要把所有数据全传到客户端  :)

2、这种方法Zee最早是在White前辈的一篇帖子里看到的,不过他老人家的sample是用来取服务器端的时间,大材小用阿。   :P

3、本方法对ie4以上版本有效。(这也是为什么不用"microsoft.XMLDOM"对象而用"msxml"的原因)