我用两个JSP页面做的处理,我运行后只有第一个下拉框里面有值,当选择了其中一个时候后面的下拉框没有任何反应,里面没有值,那位大虾帮帮我,我该怎么解决这问题!!谢谢!
menu.jsp:
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
%>
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<!--LINK href="images/css.css" type=text/css rel=stylesheet-->
<title>级联菜单</title>
</head>
<%
//连接到derby数据库,并且得到一个List,作为第一个select控件的数据源
String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String connectionURL = "jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=;DatabaseName=pubs" ; 
Connection conn = null;
Statement st = null;
ResultSet rs = null;
List items1 = new ArrayList(); try{
Class.forName(driver); 
} catch(java.lang.ClassNotFoundException e) {
e.printStackTrace();
} try {
conn = DriverManager.getConnection(connectionURL); 
st=conn.createStatement();
rs=st.executeQuery("SELECT distinct region FROM cities order by region");
while (rs.next())
{
items1.add(rs.getString(1));
}
rs.close();
st.close();
conn.close();
}  catch (Exception e)  {   
e.printStackTrace();
}
%>
<body>
<script language="javascript">
var XMLHttpReq;//这个例子里面只用到一个XMLHttpRequest对象,用于获取服务端返回的XML序列
  //创建XMLHttpRequest对象
    function createXMLHttpRequest() {
if(window.XMLHttpRequest) { //Mozilla 浏览器
XMLHttpReq = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE浏览器
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
}
//发送请求函数
function sendRequest1(url) {
createXMLHttpRequest();
XMLHttpReq.open("GET", url, true);
XMLHttpReq.onreadystatechange = processResponse1;//指定响应函数
XMLHttpReq.send(null);  // 发送请求
}
// 处理返回信息函数
    function processResponse1() {
     if (XMLHttpReq.readyState == 4) { // 判断对象状态
         if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
updateList1();
    } else { //页面不正常
       alert("您所请求的页面有异常。");
    }
        }
    }
//更新菜单函数
function updateList1() {
    var country=XMLHttpReq.responseXML.getElementsByTagName("country");
    var list = document.all.list1;
        for(var i=0;i<country.length;i++){
         list.add(new Option(country[i].firstChild.data,country[i].firstChild.data));
        }
}

//发送请求函数
function sendRequest2(url) {
createXMLHttpRequest();
XMLHttpReq.open("GET", url, true);
XMLHttpReq.onreadystatechange = processResponse2;//指定响应函数
XMLHttpReq.send(null);  // 发送请求
}
// 处理返回信息函数
    function processResponse2() {
     if (XMLHttpReq.readyState == 4) { // 判断对象状态
         if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
updateList2();
    } else { //页面不正常
       alert("您所请求的页面有异常。");
    }
        }
    }

function updateList2() {
        var city=XMLHttpReq.responseXML.getElementsByTagName("city");
        var list = document.all.list2;
        for(var i=0;i<city.length;i++){
         list.add(new Option(city[i].firstChild.data,city[i].firstChild.data));
        }
}
// 创建级联菜单函数
function showList1(obj) {
clearList1();
     clearList2();
sendRequest1("menujsp.jsp?region=" + obj);
}
function showList2(obj) {
clearList2();
sendRequest2("menujsp.jsp?country="+obj);
} function clearList1()
{
var list = document.all.list1;
list.options.length=0;
     list.add(new Option("---请选择---",""));
}

function clearList2()
{
var list = document.all.list2;
list.options.length=0;
        list.add(new Option("---请选择---",""));
}</script>
<select onchange="showList1(this.options[this.options.selectedIndex].value)" name="mli"  style="width:150px">
<option value=''>---请选择---</option>
<%
for(int i=0;i<items1.size();i++)
{
out.println("<option value='"+items1.get(i)+"'>"+items1.get(i)+"</option>");
}
%>
</select>
<select name="list1" onchange="showList2(this.options[this.options.selectedIndex].value)" style="width:150px">
<option name="">---请选择---</option>
</select>
<select name="list2" onchange="if(this.selectedIndex)alert(this.options[this.options.selectedIndex].value)" style="width:150px">
<option name="">---请选择---</option>
</select>
</body>
</html>----------------
menu.jsp
<%@ page contentType="text/html; charset=UTF-8" import="java.util.*,java.sql.*" %>
<%
String region=request.getParameter("region");
String country = request.getParameter("country");
String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String connectionURL = "jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=;DatabaseName=pubs" ; 
Connection conn = null;
Statement st = null;
ResultSet rs = null;
List countries = new ArrayList();
List cities = new ArrayList(); try{
Class.forName(driver); 
} catch(java.lang.ClassNotFoundException e) {
e.printStackTrace();
} try {
conn = DriverManager.getConnection(connectionURL); 
st=conn.createStatement();
if(region != null)
{
rs=st.executeQuery("SELECT country FROM cities where region='"+region+"'");
while (rs.next())
{
countries.add(rs.getString(1));
}
}
if(country != null)
{
rs=st.executeQuery("SELECT city_name FROM cities where COUNTRY='"+country+"'");
while (rs.next())
{
cities.add(rs.getString(1));
}
}
rs.close();
st.close();
conn.close();
}  catch (Exception e)  {   
e.printStackTrace();
}
response.setContentType("text/xml; charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
out.println("<response>");
for(int i=0;i<countries.size();i++)
{
out.println("<country>" + countries.get(i).toString() + "</country>");
}
for(int i=0;i<cities.size();i++)
{
out.println("<city>" + cities.get(i).toString() + "</city>");
}
out.println("</response>");
out.close();
%>