下拉菜单的连动问题

denyu1 2003-03-31 01:57:19
我的第二个下拉菜单中的内容想根据第一个下拉菜单的选项的不同,从数据库中提取不同的数据,我该怎么作,我已经用呢很多的办法,都不能实现,望解答!!!!!!,我现在的最大问题是我从”数据库“中提出的rs,怎么加入到<script language="JavaScript">中的函数onchange()中去,下面是我的代码
<html>
<head>
<form name="denyu" METHOD=POST action="denyu1.jsp">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>灯语</title>
</head>
<body>
<%@page contentType="text/html; charset=gb2312"%>
<%String aaaa="dwqdeer";%>
<%@page language="java" import="java.sql.*"%>
<%!
Connection conn1=null;
ResultSet rs=null;
Statement stmt1;%>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn1=DriverManager.getConnection("jdbc:odbc:dddd","","");
stmt1=conn1.createStatement();
%>
<script Language="JavaScript" import="java.sql.*">
Connection conn2=null;
ResultSet rs2=null;
Statement stmt2;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn2=DriverManager.getConnection("jdbc:odbc:dddd","","");
stmt2=conn2.createStatement();
rs2=stmt2.executeQuery("select * from table1");
var my;

while(rs2.next()){
my="String(rs2.getString(1))";
}
///我就是没法的到"my"."my"本来应该是数组的,我为呢查错写成现在这样

function change(char)
{var i;

var ss=char.value;

for (i=0;i<9; i++)
{
if (ss ==my) ///我就是没法的到"my"
{
document.denyu.village.options[0]=new Option("fda","");

}

}
}
</script>

<div align="center">

<p><strong><font size="6">JAVA</font></strong></p>
<hr>
<table width="75%" border="1">

<tr>
<td width="35%">
<%
rs=stmt1.executeQuery("select * from table1");
%>
<%!String aa,aa1;%>
<select name="select1" id="select1" onChange="change(this)">

<%while(rs.next())
{aa=rs.getString(1);
aa1=rs.getString(3);
%>

<option value=<%=aa%>><%=aa%></option>

<% } %>
</select>
<%rs.close();%>
</td>

<td></select><select name="village" size="1">
<option selected>==dsdfdfs==</option></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<p><strong><font size="6"></font></strong></p>
<p>  </p>
</div>

<p>

<input type="submit" value="确定">
<input type="submit" value="取消">
</p>
<a href="dy.jsp">去</a>
</body>
</html>
...全文
29 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
acefr 2003-04-03
这种帖子很多了,FAQ里就有,如果不满意,搜索一下“下拉”或者“联动”,就一大堆的。看几篇就可以解决。
回复
zhangyuan1 2003-04-03
http://www.csdn.net/develop/Read_Article.asp?Id=17617
回复
Little_qd 2003-03-31
楼上的好像没搞清问题的关键
要求是第一个下拉菜单值改变
第二个下拉菜单值相应改变
你说的方法怎么实现??

回复
darkangel199 2003-03-31
楼上说的有些片面,其实在页面解析的时候就可以用jsp将所需数据取出,然后构造成javascript数组。本例的关键就是数组构成,就如我所提供的方法一样,在javascript中嵌套jsp,然后用jsp打印出javascript数组,这样就能完成任务。
回复
Little_qd 2003-03-31
1、定义IFRAME
<IFRAME HEIGHT="50" WIDTH="0" SRC="" NAME="hiddenframe" id="hiddenframe"></IFRAME>
2、第一个下拉菜单触发Onchange事件
function Load(obj1,obj2)
{
var obj = document.form1.obj1;
var dm=eval( obj + ".options[" + eval( obj + ".selectedIndex" ) + "].value");
document.frames["hiddenframe"].location="Load.jsp?DM="+dm;
}
</script>
3、Load.jsp后台操作
清空第二个下拉菜单remove()
jsp数据库操作生成菜单项,将生成的选项添加到第二个下拉菜单
<%
while( rs.next() )
{
%>
<SCRIPT LANGUAGE="JavaScript">
var option;
option= parent.document.createElement("OPTION");
option.value=sValue;
option.text=sValue;
obj.add( option);
</SCRIPT>
<%
}
%>
回复
tian_co 2003-03-31
jsp是服务器端执行,js脚本是客户端执行,不可能通过js脚本执行吧。我是通过另一个页面刷新本页面来控制的。
回复
darkangel199 2003-03-31
你应该在jsp中,用jsp语言的输出语句:System.out.println();按javascript的语言格式输出my的定义,例如:
String tmp=String(rs2.getString(1));
System.out.println("var my="+tmp);
回复
puppy_lu 2003-03-31
要是我来做的话我会把第一个下拉框的选择事件作一次提交,让后台去处理
8过这样好像有点麻烦
回复
denyu1 2003-03-31
我最开始就是照ASP的方法写的,把jsp的代码和js脚本的代码分开的,但是不能把jsp代码中的数值传到js脚本的代码中去,我才把它们写在一起看有没有用,也就是上面的代码
回复
bluesky1314520 2003-03-31
呵呵,不要吵嘛,解决问题才是最重要的!我写过asp下拉连动,按理来说,在jsp中也是可以用的。你的思路应该是没有问题的,在js脚本中嵌入jsp代码,就象asp下一样,不过你的写法真的有点问题,你要把jsp的代码和js脚本的代码分清楚!建议先不要调用数据库的数据,直接放几个数据进去调试通过后再将指定的数据替换成从数据库中读取的数据,一步一步来,不要混淆了!
回复
denyu1 2003-03-31
我什么都知道呢还用问吗,你有本事就写出正确的来啊!
回复
sikuan 2003-03-31
楼主,这是谁家的用法
<script Language="JavaScript" import="java.sql.*">
建议你先多看点基础的书,分清楚jsp和JavaScript
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2003-03-31 01:57
社区公告
暂无公告