在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"> </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(",")));
%>
浙公网安备 33010602011771号