我的用的二级联动与数据库相连,第一级"授权批准人员"可以从数据库中调出,但第二级"授权人员类别"只是空的下拉菜单,请问高手这是怎么回事?我的代码如下,请高手指教
<%@ page language="java"  import="java.util.*" pageEncoding="GBK"%>
<%@ page import="java.sql.*" %>
<script src="AjaxClient.js"></script>
 <script>   
    
  function bbbbb(){           initXmlHttp();
var idValue = form1.se1.text;
var url = "ajaxServlet?id=" + idValue;
send(url,form1);  }  
 </script> 
<form align="center" method="post" name="FrmAddLink" LANGUAGE="javascript"
    onsubmit="return FrmAddLink_onsubmit()" action="saveadduser.jsp">
<%
  ResultSet rs1=stmt.executeQuery("select  distinct TYPE from MTYPE_TAB");
%>
 <table border="1" cellspacing="0" width="700" >
 <tr> 
<td width="20%" align="right" height="2" valign="middle"><font color=red>*</font><b><font color="#0080C0">授权批准人员:</font></b></td>
                <td height="2" colspan="3" width="85%"> 
                  <select name="se1" onChange="bbbbb()"  >
<option selected>请选择</option>
  
    <% while(rs1.next())   
  {%>
    <option  value="<%=rs1.getString("TYPE")%>"><%=rs1.getString("TYPE")%></option>  
    <% }   
  %>   
  
</select>
  
                </td>
              </tr>
<tr> 
 <td width="20%" align="right" height="2" valign="middle"> <font color=red>*</font><b><font color="#0080C0">授权人员类别:</font></b></td>
                <td height="2" colspan="3" width="85%"> 
                 <select name="se2" >
  
</select>
 <%  
rs1.close();
stmt.close();
  %>
</td>
</tr>
</table>
****************************AjaxClient.js代码如下 :
var xmlHttp;
function initXmlHttp() {
if(window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
}function sendUrl(url,form){
var req=xmlHttp;
if (req) {  
req.abort();
        req.open('GET', url,true);//struts  
req.onreadystatechange=function() {  
           if (req.readyState==4 && req.status==200) {//判断状态,4是已发送,200已完成  form.se2.options.length=0;
form.se2.options.add(new Option("请选择",""));
var sectionInfo = req.responseText;
var list = sectionInfo.split("&&&&");
for(var i = 0;i < list.length;i ++){
form.se2.options.add(new Option(list[i],list[i]));
}
         }
}
        req.setRequestHeader("Content-Type", "GB2312");  
        req.send(null);
      } 
}
function sendUrlTwo(url,form){
var req=xmlHttp;
if (req) {  
req.abort();
        req.open('GET', url,true);//struts  
req.onreadystatechange=function() {  
           if (req.readyState==4 && req.status==200) {//判断状态,4是已发送,200已完成  
            var sectionInfo = req.responseText;
  form.se3.options.length=0;
form.se3.options.add(new Option("请选择",""));var list = sectionInfo.split("&&&&");
for(var i = 0;i < list.length;i ++){
form.se3.options.add(new Option(list[i],list[i]));
}
         }
}
req.setRequestHeader("Content-Type", "GB2312");  
        req.send(null);
      } 
}function createXML(form){
var xmlDom=new ActiveXObject("MSXML2.DOMDocument");
xmlDom.loadXML("<?xml version='1.0' encoding='gb2312'?>");
var sendInfoGen = xmlDom.createElement("XML");//设置根节点为XML
xmlDom.appendChild(sendInfoGen);
for(var i = 0;i < form.elements.length;i ++){
var inputType = form.elements[i].type;
if(inputType == 'checkbox' || inputType == 'text' || inputType == 'radio'){
var value = form.elements[i].value;
var valueXML = xmlDom.createElement(form.elements[i].name);
valueXML.text = value;
sendInfoGen.appendChild(valueXML);
}
}
return xmlDom.xml;
}我用的是oracle数据库,表名MTYPE_TAB,结构如下
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------
TYPE                                               VARCHAR2(50)
MEMBERTYPE                                         VARCHAR2(50)
我用的是weblogic

解决方案 »

  1.   

    主要还是得你自己来调试,可以给你些意见:
    1.确定AjaxClient.js是否引入。
    2.确定请求是否正确发到服务器,参数传递是否正确,可在服务器代码中设个断点看看。
    3.看看数据库查询结果是否正确。
    4.在onreadystatechange中alert一下req.responseText看看返回结果是否正确。
    要学会自己找问题。
      

  2.   

    我以前也写过一个这样的
    给你个参考:
    ****************************AjaxClient.js代码如下 :
    ......................
    ..........
    //我的就这里不同
    form.se2.options.length=0;
    form.set2.add(document.createElement("OPTION"));
    form.se2.options[0].text="请选择";
    form.se2.options[0].value="";
    var sectionInfo = req.responseText;
    var list = sectionInfo.split("&&&&");
    for(var i = 0;i < list.length;i ++){
    form.se2.add(document.createElement("OPTION"));
    form.se2.options[i+1].text=list[i];
    form.se2.options[i+1].value=list[i];
    }
    .............
    你试下
      

  3.   

    在onreadystatechange中alert一下req.responseText看看返回结果是否正确?
    这个我不会,高手指点一下!
      

  4.   

    req.onreadystatechange=function() {  
               if (req.readyState==4 && req.status==200) {//判断状态,4是已发送,200已完成  form.se2.options.length=0;
    form.se2.options.add(new Option("请选择",""));
    var sectionInfo = req.responseText;
    var list = sectionInfo.split("&&&&");
    for(var i = 0;i < list.length;i ++){
    form.se2.options.add(new Option(list[i],list[i]));
    alert(req.responseText);
    }
    是不是这么加阿?我怎么做后还是跟原来一样!没有什么变化啊
      

  5.   

    req.onreadystatechange=function() {  
               if (req.readyState==4 && req.status==200) {//判断状态,4是已发送,200已完成  form.se2.options.length=0;
    form.se2.options.add(new Option("请选择",""));
    var sectionInfo = req.responseText;
    var list = sectionInfo.split("&&&&");
    for(var i = 0;i < list.length;i ++){
    form.se2.options.add(new Option(list[i],list[i]));
    alert(req.responseText);
    }
    是不是这么加阿?我怎么做后还是跟原来一样!没有什么变化啊
      

  6.   

    参考:
    http://community.csdn.net/Expert/topic/5494/5494893.xml?temp=.8541834
      

  7.   

    后台数据库中有一个表categoryBaginfo 表里有3项:categoryid name value       <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page language="java" import="java.sql.*"%>
    <html>
      <head><title>级联菜单</title></head>
        <body onload="initSel()">
        <SCRIPT LANGUAGE="">
            <%
              Connection con=null;
              con=conn.Conn();
              Statement stmt=con.createStatement();
              ResultSet rs=stmt.executeQuery("select * from categoryBaginfo where categoryBagid<>0");
              int i=0;
            %>
            var arrData=new Array();
            <% 
               while(rs.next()){
            %>
                    arrData[<%=i%>]=new Array("<%=rs.getString("name")%>","<%=rs.getString("value")%>");
            <%                
                    i++;
            }
            rs.close();
            stmt.close();
            con.close();
                    %>
            function initSel() {
       var optStr="";
       for(var i=0;i<arrData.length;i++){
          if(optStr.search("("+arrData[i][0]+")")<0){
             optStr+="("+arrData[i][0]+")";
             var oOptA=document.createElement("OPTION");
             oOptA.value=arrData[i][0];
             oOptA.innerHTML=arrData[i][0];
             form1.selMain.appendChild(oOptA);         
          }
       }
       chgSlave();
    }function chgSlave()
            {
                    form1.selSlave.options.length=0;
                    for(var i=0;i<arrData.length;i++)
                    {
                            if(arrData[i][0]==form1.selMain.value)
                            {
                                    var oOptB=document.createElement("OPTION");
                                    oOptB.value=arrData[i][1];
                                    oOptB.innerHTML=arrData[i][1];
                                    form1.selSlave.appendChild(oOptB);
                            }
                    }
            }
            </SCRIPT>
         <form name="form1" method="post" action="4.jsp">
               <table>
                 <tr>
                        <td>name:<select id="selMain" onchange="chgSlave()" name="selMain"></select>
                                value:<select id="selSlave" name="selSlave"></select>
                            </td>
                     </tr>
               </table>
             </form>
      </body>
    </html>
      

  8.   

    头一次看到把连接数据库的操作写到script里面,-_-!
      

  9.   

    Ajax实现二级联动下拉框http://www.blogjava.net/rickhunter/articles/46582.html