ASP中如何实现两列表框内容动态关联
发布网友
发布时间:2022-04-22 07:13
我来回答
共2个回答
热心网友
时间:2022-04-22 08:42
做这个也要不了多高的手,只是你的分太少.你自己应该学会做,不就是使用AJAX嘛.给你做个吧,反正用我创建了简单的数据库调试通过,数据库和记录集都没关闭,你自已去修改吧
页面一代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include virtual="../conn.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<script type="text/javascript">
function getXmlHttp()
{
var xmlHttp=null;
try{ xmlHttp=new XMLHttpRequest();}
catch (e)
{
try {xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
}
return xmlHttp;
}
function showSmallClass()
{
var xmlObj=getXmlHttp();
if (xmlObj==null){alert("浏览器不支AJAX");return}
var url="2.asp?bid="+escape(document.form1.bigClass.value)+"&"+new Date();
xmlObj.open("GET",url,true);
xmlObj.send(null);
xmlObj.onreadystatechange=function()
{
if(xmlObj.readyState==4)
{
if(xmlObj.responseText!="")
{
var smallArr=eval(xmlObj.responseText);
document.form1.smallClass.length=1;
for(i=1;i<smallArr.length;i++)
document.form1.smallClass.options.add(new Option(smallArr[i][1],smallArr[i][0]));
}
}
}
}
</script>
<body>
<%
dim rs
set rs=conn.execute("select * from BigClass")
%>
<form id="form1" name="form1" method="post" action="">
<select name="bigClass" id="bigClass" onchange="showSmallClass()">
<option >请选择大类别</option>
<%
while not rs.eof
%>
<option value="<%=rs("BigClassId")%>"><%=rs("BigClassName")%></option>
<%
rs.moveNext
wend
%> </select>
<select name="smallClass" id="smallClass" >
<option>请选择小类别</option>
</select>
</form>
</body>
</html>
===页面二:2.asp=======================
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include virtual="../conn.asp"-->
<%
Response.ContentType = "text/html"
Response.Charset = "GB2312"
dim bId,rs,sql,classString
bId=request.QueryString("bid")
sql="select * from SmallClass where BigClassId="&bId
set rs=conn.execute(sql)
while not rs.eof
classString=classString&",['"&rs("smallClassId")&"','"&rs("smallClassName")&"']"
rs.moveNext
wend
classString="["&classString&"]"
response.Write(classString)
%>
你试过这代码吗?给你写了都不试一下,这个就算复杂了?
你说的用一个页面,就要先把小类的所有记录先读出来,保在客户端的JS变量中,写在函数里,如果数据量小,也可以,做起来也不难.但是用AJAX更能发挥AJAX的优势,它们看上来是两个页面,但执行起来的外观效果和一个页面一样.算了,看来和你说是白费劲,你根本连什么是客户端什么是服务器端都没清,你想怎么弄就怎么弄吧.只是告诉你,你这和JSP没关系.
热心网友
时间:2022-04-22 10:00
有点麻烦