读书人

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

发布时间: 2012-02-08 19:52:21 作者: rapoo

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

读书人网 >Java Web开发

热点推荐