首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

二级联动实现不了,请高手指教,该怎么解决

2012-02-08 
二级联动实现不了,请高手指教我的用的二级联动与数据库相连,第一级 授权批准人员 可以从数据库中调出,但

二级联动实现不了,请高手指教
我的用的二级联动与数据库相连,第一级 "授权批准人员 "可以从数据库中调出,但第二级 "授权人员类别 "只是空的下拉菜单,请问高手这是怎么回事?我的代码如下,请高手指教
<%@   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



[解决办法]
不会,帮你UP
[解决办法]
主要还是得你自己来调试,可以给你些意见:
1.确定AjaxClient.js是否引入。
2.确定请求是否正确发到服务器,参数传递是否正确,可在服务器代码中设个断点看看。
3.看看数据库查询结果是否正确。
4.在onreadystatechange中alert一下req.responseText看看返回结果是否正确。
要学会自己找问题。
[解决办法]
我以前也写过一个这样的
给你个参考:
****************************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];
}
.............
你试下
[解决办法]
在onreadystatechange中alert一下req.responseText看看返回结果是否正确?
这个我不会,高手指点一下!
[解决办法]
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);
}
是不是这么加阿?我怎么做后还是跟原来一样!没有什么变化啊

[解决办法]
参考:
http://community.csdn.net/Expert/topic/5494/5494893.xml?temp=.8541834
------解决方案--------------------


后台数据库中有一个表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>

[解决办法]
头一次看到把连接数据库的操作写到script里面,-_-!
[解决办法]
Ajax实现二级联动下拉框

http://www.blogjava.net/rickhunter/articles/46582.html

热点排行