在ASP中使用javascript连接SQLServer数据库实现下拉列表框多级联动

INDEX.HTM 文件中代码

  1 <html>
  2   <head>
  3     <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  4     <title>琥珀无限级联动菜单[AJAX版]</title>
  5     <style type="text/css">
  6     body, td
  7     {
  8       font-family: 宋体;
  9       font-size: 12px;
 10     }
 11     </style>
 12 <script language="JavaScript">
 13 function GetResult(str,classid)
 14 {
 15 /*
 16 * Download by http://www.codefans.net
 17 *--------------- GetResult(str,classid) -----------------
 18 * GetResult(str) 
 19 * 功能:通过XMLHTTP发送请求,返回结果.
 20 * 参数:str,字符串,发送条件;classid,数字,菜单级别
 21 * 实例:GetResult(document.all.userid.value,1);
 22 *--------------- GetResult(str,classid) -----------------
 23 */
 24 //定义菜单级数,菜单ID数组,菜单对应字段数组
 25 var MenuIdArr,MenuFieldArr,MenuClass
 26 MenuIdArr= new Array()
 27 MenuFieldArr=new Array()
 28 MenuClass=4
 29 
 30 MenuIdArr[1]="sel1"
 31 MenuIdArr[2]="sel2"
 32 MenuIdArr[3]="sel3"
 33 MenuIdArr[4]="sel4"
 34 
 35 MenuFieldArr[1]="name"
 36 MenuFieldArr[2]="name"
 37 MenuFieldArr[3]="name"
 38 MenuFieldArr[4]="name"
 39 
 40 
 41 if (window.XMLHttpRequest) { // Mozilla, Safari, ...
 42     http_request = new XMLHttpRequest();
 43 } else if (window.ActiveXObject) { // IE
 44     http_request = new ActiveXObject("Microsoft.XMLHTTP");
 45 }
 46 
 47 
 48 var linkurl="ajax_server.asp?classid="+classid+"&sel="+str+"&fieldname="+MenuFieldArr[classid+1]
 49 http_request.open("GET",linkurl,false);
 50 http_request.send(null);
 51 
 52 //服务器端处理返回的是经过escape编码的字符串.
 53 //在页面显示服务器查询结果
 54 
 55 var returntxt=unescape(http_request.responseText)
 56 if(returntxt.length>0)
 57 {document.all,ajax.innerHTML="服务器返回结果:<font color='red'>"+returntxt+"</font>   [Powered by AJAX]"}
 58 else
 59 {document.all,ajax.innerHTML=""}
 60 
 61 //通过XMLHTTP返回数据,开始构建Select.
 62 //BuildSel(returntxt,eval("document.all."+MenuIdArr[classid+1]))
 63 BuildSel(returntxt,document.getElementById(MenuIdArr[classid+1]))
 64 
 65 //============更改下下级以下菜单为空==============
 66 var kkk
 67 for(kkk=classid+2;kkk<=MenuClass;kkk++)
 68     {        
 69     submenu=document.getElementById(MenuIdArr[kkk])    
 70     submenu.length=1
 71     submenu.options[0].selected=true
 72     }
 73 }
 74 
 75 function BuildSel(str,sel)
 76 {
 77 /*
 78 *--------------- BuildSel(str,sel) -----------------
 79 * BuildSel(str,sel) 
 80 * 功能:通过str构建Select.
 81 * 参数:str,字符串,由服务端返回的.有特定结构"字符串1|,字符串2,字符串3"
 82 *          也可为"字符串1序号|字符串1文本,字符串2序号|字符串2文本,字符串3序号|字符串3文本",如本例
 83 * 参数:sel,要构建的Select
 84 * 实例:BuildSel(unescape(oBao.responseText),document.all.sel2)
 85 *--------------- BuildSel(str,sel) -----------------
 86 */
 87 //先清空原来的数据.
 88 sel.options.length=0;
 89 var arrstr = new Array();
 90 arrstr = str.split(",");
 91 //开始构建新的Select.
 92 sel.options.add(new Option( "-----请选择-----",""));  
 93 if(str.length>0)   
 94 {
 95 for(var i=0;i<arrstr.length;i++)
 96 {
 97 //分割字符串
 98 var subarrstr=new Array
 99 subarrstr=arrstr[i].split("|")
100 //生成下级菜单
101 sel.options.add(new Option(subarrstr[1],subarrstr[0])); 
102 }
103 sel.options[0].selected=true
104 }
105 
106 }
107 </script>
108 </head>
109 <body>
110     <form name="form1" method="post" action="">
111         <table width="90%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#CCCCCC">
112           <tr bgcolor="F1F1F1">
113             <td height="24" colspan="2" align="center">琥珀无限级联动菜单-AJAX版 [HPMenu_AJAX V1.0]</td>
114           </tr>
115           <tr bgcolor="#FFFFFF">
116             <td width="12%" height="24" align="center">所 在 洲:</td>
117             <td>
118             <select name="sel1" id="sel1" onChange="GetResult(this.value,1)">
119                <option value="" selected>-----请选择-----</option>
120               <option value="1">亚洲</option>
121               <option value="2">欧洲</option>
122             </select></td>
123           </tr>
124           <tr bgcolor="#FFFFFF">
125             <td height="24" align="center">国  家:</td>
126             <td><select name="sel2" id="sel2" onChange="GetResult(this.value,2)">
127                <option value="" selected>-----请选择-----</option>
128             </select></td>
129           </tr>
130           <tr bgcolor="#FFFFFF">
131             <td height="24" align="center">城  市:</td>
132             <td><select name="sel3" id="sel3" onChange="GetResult(this.value,3)">
133                <option value="" selected>-----请选择-----</option>
134             </select></td>
135           </tr>
136           <tr bgcolor="#FFFFFF">
137             <td height="24" align="center">地  区:</td>
138             <td><select name="sel4" id="sel4">
139                <option value="" selected>-----请选择-----</option>
140             </select></td>
141           </tr>
142           <tr bgcolor="F1F1F1">
143             <td height="24" colspan="2" align="center" id="ajax">&nbsp;</td>
144           </tr>
145       </table>
146 <!--        <script language="javascript">
147         GetResult(document.getElementById("sel1").value,1)        
148         </script> -->
149 </form>
150 </body>
151 </html>

跳转文件的代码:

<%@Language="JavaScript" %>
<%
var sql;
var sel = Request("sel");
var classid = Request("classid")
var fieldname = Request("fieldname")
var arrResult = new Array();
var  conn  =  new  ActiveXObject("ADODB.Connection");  
var	connstr="Provider=sqloledb;data source=(local);user id=sa;password=123456;Initial Catalog=CJ"   ;
	conn.Open(connstr);
//var sql = "select "+fieldname+" from Demo where parentid='"+sel+"' and classid="+classid;
if (classid==1)
 sql = "select class_id,classname from banji where xx_id='"+sel+"'";
else 
 sql = "select course_id,coursename from course where class_id='"+sel+"'";
var  rs  =  new  ActiveXObject("ADODB.Recordset");  
   rs.CursorType  =  3;    //adOpenStatic  
   rs.LockType  =  1;        //adLockReadOnly  
   rs.Open(sql, conn)  

//Response.Write("alert("+sql+")")

while(!rs.EOF)
{
//遍历所有适合的数据放入arrResult数组中.
arrResult[arrResult.length] = rs(0).Value+"|"+rs(1).Value;
rs.MoveNext();
}
rs.Close();                //关闭记录集合  
conn.Close();        //  关闭数据库链接 
//escape解决了XMLHTTP。中文处理的问题.
//数组组合成字符串.由","字符串连接.
Response.Write(escape(arrResult.join(",")));
%>

 

posted @ 2014-02-23 01:23  闲云清烟  阅读(347)  评论(0)    收藏  举报