利用XMLHTTP实现的二级连动Select

2016-02-19 12:59 9 1 收藏

下面请跟着图老师小编一起来了解下利用XMLHTTP实现的二级连动Select,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - Web开发 】

这是继 "利用XMLHTTP无刷新获取数据" 的另一篇关于XMLHTTP的应用. 
关于XMLHTTP.可以说,是一个很好的接合剂.把客户端和服务端的距离拉近了. 
利用XMLHTTP.我们可以实现很多好的想法. 
这文章.实现了二级连动Select. 
传统二级连动是把所有的数据都传到有客户端.. 
利用XMLHTTP.我们可以实时地返回我们所需要的数据. 
select.htm 
代码如下:

script language="Javascript" 
function GetResult(str) 

/* 
 *--------------- GetResult(str) ----------------- 
 * GetResult(str)  
 * 功能:通过XMLHTTP发送请求,返回结果. 
 * 参数:str,字符串,发送条件. 
 * 实例:GetResult(document.all.userid.value); 
 * author:wanghr100(灰豆宝宝.net) 
 * update:2004-5-27 19:02 
 *--------------- GetResult(str) ----------------- 
 */ 
    var oBao = new ActiveXObject("Microsoft.XMLHTTP"); 
    oBao.open("POST","Server.asp?sel="+str,false); 
    oBao.send(); 
    //服务器端处理返回的是经过escape编码的字符串. 
    //通过XMLHTTP返回数据,开始构建Select. 
    BuildSel(unescape(oBao.responseText),document.all.sel2) 

function BuildSel(str,sel) 

/* 
 *--------------- BuildSel(str,sel) ----------------- 
 * BuildSel(str,sel)  
 * 功能:通过str构建Select. 
 * 参数:str,字符串,由服务端返回的.有特定结构"字符串1,字符串2,字符串3" 
 * 参数:sel,要构建的Select 
 * 实例:BuildSel(unescape(oBao.responseText),document.all.sel2) 
 * author:wanghr100(灰豆宝宝.net) 
 * update:2004-5-27 19:02 
 *--------------- BuildSel(str,sel) ----------------- 
 */ 
    //先清空原来的数据. 
    sel.options.length=0; 
    var arrstr = new Array(); 
    arrstr = str.split(","); 
    //开始构建新的Select. 
    for(var i=0;iarrstr.length;i++) 
    { 
        sel.options[sel.options.length]=new Option(arrstr,arrstr) 
    } 

/script 
select name="sel" onChange="GetResult(this.value)" 
option value=""请选择 
option value="福建省"福建省 
option value="湖北省"湖北省 
option value="辽宁省"辽宁省 
select 
select name="sel2"/select

server.asp  服务器端处理. 
代码如下:

% @Language="Javascript" % 

function OpenDB(sdbname) 

/* 
 *--------------- OpenDB(sdbname) ----------------- 
 * OpenDB(sdbname)  
 * 功能:打开数据库sdbname,返回conn对象. 
 * 参数:sdbname,字符串,数据库名称. 
 * 实例:var conn = OpenDB("database.mdb"); 
 * author:wanghr100(灰豆宝宝.net) 
 * update:2004-5-12 8:18 
 *--------------- OpenDB(sdbname) ----------------- 
 */ 
    var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname); 
    var conn = Server.CreateObject("ADODB.Connection"); 
    conn.Open(connstr); 
    return conn; 

var oConn = OpenDB("data.mdb"); 
var province = Request("sel"); 
var arrResult = new Array(); 
var sql = "select city from china where province='"+province+"'"; 
var rs = Server.CreateObject("ADODB.Recordset"); 
rs.Open(sql,oConn,1,1); 
while(!rs.EOF) 

    //遍历所有适合的数据放入arrResult数组中. 
    arrResult[arrResult.length] = rs("city").Value; 
    rs.MoveNext(); 

//escape解决了XMLHTTP。中文处理的问题. 
//数组组合成字符串.由","字符串连接. 
Response.Write(escape(arrResult.join(","))); 
%

数据库设计 
data.mdb 
表china. 
字段 
id  自动编号 
province 文本 
city  文本 
表:china 数据:  
id province city 
1 福建省  福州市 
2 福建省  厦门市 
3 福建省  泉州市 
4 湖北省  武汉市 
5 湖北省  荆州市 
6 湖北省  宜昌市 
7 辽宁省  沈阳市 
8 辽宁省  大连市 
9 辽宁省  盘锦市

来源:https://www.tulaoshi.com/n/20160219/1602715.html

延伸阅读
《太阁立志传5》二级产品 作者:光荣论坛-真杨威利 歧阜:規模が17美濃和紙 清州,冈崎:瀬戸焼(规模14) 姬路:杉原纸,规模17 津山:栉(规模10?) 长船:备前焼(规模12) 目加由14,今浜14:信楽焼 冈崎:瀬戸焼(规模14) 赤间関:萩焼(规模12) 轮岛:轮岛涂(规模不明) 鹿岛&土崎凑:春庆涂(规模10?) 大凑:伊势海老(规模17...
标签: ASP
      我曾经见到这个论坛里有网友本来是想做免费二级域名服务的,泛域名和程序都搞到手了,兴冲冲的租了虚拟主机空间,才发现因为主机的问题,根本就做不成。     所以,选择合适的空间也非常重要。     在我写完了(之二)以后,有一位网友在这个论坛对我提出了一些置疑...
标签: ASP
      现在有些服务商提供了注册一个顶级域名送20个二级域名的服务,可是有的站长会觉得不够用,其实可以通过程序自己做二级域名,就象 126.com一样,126.com还有弹出广告,你自己做的可以加你自己的广告,也可以不加广告,也可以开放给网友们申请,也可以象我一样,只给我的好朋友们用 http://www.netmiss.net ,一...
标签: PHP
  请参考这个程序: <?php //$day 星期几,如:星期三 $day=3; ? <html <head <meta http-equiv="Content-Type" content="text/html; charset=gb2312" <meta name="GENERATOR" content="Microsoft FrontPage 4.0" <meta name="ProgId" content="F...
标签: ASP
       '::::::: 此程序属扬子原创 ::::::::::::::::::   '::::::: 在sql2000,2000s中测试通过::::::::   '::::::: 联系我:QQ:21112856,Email:yangzinet@hotmail.com:::::::::   '::::::: http://www.tingfo.net ::::::      要达到二级名的效果,...

经验教程

673

收藏

81
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部