我的用的二级联动与数据库相连,第一级"授权批准人员"可以从数据库中调出,但第二级"授权人员类别"只是空的下拉菜单,请问高手这是怎么回事?我的代码如下,请高手指教
<%@ 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
<%@ 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.确定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];
}
.............
你试下
这个我不会,高手指点一下!
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);
}
是不是这么加阿?我怎么做后还是跟原来一样!没有什么变化啊
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
<%@ 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>