Java 使用Ajax和JSP的多级选择级联下拉列表

Java 使用Ajax和JSP的多级选择级联下拉列表,java,ajax,jsp,jquery,Java,Ajax,Jsp,Jquery,我正在向JSP页面发送多选下拉列表值。下面是发送multiselect值的AJAX代码。JSP页面包含从数据库读取的SQL查询,并在另一个下拉列表中显示其值。下面的代码仅显示基于选择而非多选的级联下拉列表值。似乎只有一个值被发送到apps.jsp,而不是所有值。我尝试了一些改变,但没有成功。下面是我可以使用的最好的工作代码。根据第一个下拉列表中的multiselect获取第二个下拉列表显示值有什么帮助吗?单个下拉菜单适用于以下代码。多谢各位 <select multiple="multip

我正在向JSP页面发送多选下拉列表值。下面是发送multiselect值的AJAX代码。JSP页面包含从数据库读取的SQL查询,并在另一个下拉列表中显示其值。下面的代码仅显示基于选择而非多选的级联下拉列表值。似乎只有一个值被发送到apps.jsp,而不是所有值。我尝试了一些改变,但没有成功。下面是我可以使用的最好的工作代码。根据第一个下拉列表中的multiselect获取第二个下拉列表显示值有什么帮助吗?单个下拉菜单适用于以下代码。多谢各位

<select multiple="multiple" name="RequirementFor" id="RequirementFor" onchange="showState(this.value);">

 <option value="1">Test1</option>
    <option value="2">Test2</option>
<option value="3">Test3</option>
<option value="4">Test4</option>
</select>
<div id="plat"><select name="Platform" id="Platform"  multiple="multiple"     onchange='showState2(this.value)'>

    </select></div>
//AJAX Code
var xmlHttp ; 
var xmlHttp;
function showState(str){

if (typeof XMLHttpRequest != "undefined"){
xmlHttp= new XMLHttpRequest();
}
else if (window.ActiveXObject){
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlHttp==null){
alert("Browser does not support XMLHTTP Request");
return;
} 
var url="apps.jsp";
url +="?value=" +str;
xmlHttp.onreadystatechange = stateChange;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}

function stateChange(){   
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){   
document.getElementById("plat").innerHTML=xmlHttp.responseText   ;
}
}

测试1
测试2
测试3
测试4
//AJAX代码
var-xmlHttp;
var-xmlHttp;
函数showState(str){
if(XMLHttpRequest的类型!=“未定义”){
xmlHttp=新的XMLHttpRequest();
}
else if(window.ActiveXObject){
xmlHttp=新的ActiveXObject(“Microsoft.xmlHttp”);
}
if(xmlHttp==null){
警报(“浏览器不支持XMLHTTP请求”);
返回;
} 
var url=“apps.jsp”;
url+=“?value=“+str;
xmlHttp.onreadystatechange=stateChange;
open(“GET”,url,true);
xmlHttp.send(空);
}
函数stateChange(){
如果(xmlHttp.readyState==4 | | xmlHttp.readyState==“完成”){
document.getElementById(“plat”).innerHTML=xmlHttp.responseText;
}
}
下面是来自JSP查询(apps.JSP)页面的代码

Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”).newInstance();
Connection con=DriverManager.getConnection(“jdbc:sqlserver://localhost“,”用户名“,”密码“);
报表stmt;
结果集rs;
字符串[]funID=request.getParameterValues(“值”);
字符串conCat=“”;
试一试{
如果(funID.length>0)
{

对于(int i=0;i我认为您应该改变获取多个值的方式。有些事情如下:

    <select multiple="multiple" name="RequirementFor" id="RequirementFor" onchange='getMultiple(this);'>
    <option value="1">Test1</option>
    <option value="2">Test2</option>
    <option value="3">Test3</option>
    <option value="4">Test4</option>
</select>

<script>
    var selected; 
    function getMultiple(ob) { 
        selected = new Array();
        for (var i = 0; i < ob.options.length; i++) {
            if (ob.options[ i ].selected) {
                selected.push(ob.options[ i ].value);
            }
        }
        var str = "";
    for (var i = 0; i < selected.length; i++) {
        str += "&value=" + selected[i];
    }
    console.log(str);

            // --> your ajax code

    }

</script>

测试1
测试2
测试3
测试4
选择var;
函数getMultiple(ob){
选定=新数组();
对于(变量i=0;i您的ajax代码
}

我是否正确地使用ajax发送了多个值?我尝试了此操作,得到错误“Console未定义”。我也尝试了window.Console.log(str),结果是“window.Console为null或不是对象”错误。谢谢。谢谢..stackoverflow中的文章提供了解决方案。对于控制台错误。在脚本代码顶部发布以下代码以解决控制台错误。如果(!(window.console&&console.log)){console={log:function(){},调试:function(){},信息:function(){},警告:function(){},错误:function(){};}
    <select multiple="multiple" name="RequirementFor" id="RequirementFor" onchange='getMultiple(this);'>
    <option value="1">Test1</option>
    <option value="2">Test2</option>
    <option value="3">Test3</option>
    <option value="4">Test4</option>
</select>

<script>
    var selected; 
    function getMultiple(ob) { 
        selected = new Array();
        for (var i = 0; i < ob.options.length; i++) {
            if (ob.options[ i ].selected) {
                selected.push(ob.options[ i ].value);
            }
        }
        var str = "";
    for (var i = 0; i < selected.length; i++) {
        str += "&value=" + selected[i];
    }
    console.log(str);

            // --> your ajax code

    }

</script>