JSP两级级联,在提交表单后 JSP两级级联,在提交表单后,怎样让第二级根据事先选定的第一级初始化 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种问题现在典型的解决办法就是ajax,但是写js也能实现! 把第一级的参数传到后台,在转向JSP的时候把参数传过来调用dwr的方法查询出二级 思路就是javascript代码自己写吧! 最优解ajax,可以试试jQuery来实现更快捷一点点。 Ajax javascript <script type="text/javascript"> function ajaxFunctionType(){ var xmlHttp; try{ xmlHttp = new XMLHttpRequest(); }catch(e){ try{ xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ alert("not support"); return false; } } } xmlHttp.onreadystatechange = function(){ if(xmlHttp.readyState == 4){ if(xmlHttp.status == 200){ var xmlDoc = xmlHttp.responseXML; var ops = document.post.type; //删除之前残留的类型 while(ops.length>0){ ops.remove(0); } for(var i = 0 ; i< xmlDoc.getElementsByTagName("name").length; i++){ //循环添加类型 var op = document.createElement('option'); op.text = xmlDoc.getElementsByTagName("name")[i].firstChild.nodeValue; var se=document.post.type; try { se.add(op,null); // standards compliant } catch(ex) { se.add(op); // IE only } } //document.user.userName.value = xmlDoc.getElementsByTagName("userName")[0].firstChild.nodeValue; }else{ alert("error:" + xmlHttp.status); } } } var modelSe = document.post.model; //proSe.options[proSe.selectedIndex].text--需要经过转码,不然在服务器端不管怎么设置都会出现乱码 xmlHttp.open("POST","PostAction!getTypeByModel?mdId="+encodeURI(modelSe.options[modelSe.selectedIndex].value),true); xmlHttp.send(null); } </script><form name="post"> 帖模块: <!-- <select id="model" onchange="ajaxFunctionType()"> <s:iterator > </s:iterator> </select> --> <s:select id="model" list="postModelMap" onchange="ajaxFunctionType()"> </s:select> <br /><br /> 帖子类型: <select id="type"> </select> </form>前两天刚刚帮朋友解决的 你的意思就还比是在修改一个什么信息时,显示默认当时选中的级联内容,这样的话还是同样的,代码如下:<select id="bpid" name="bpid"> <option value="0">==选择栏目==</option> <%for(int i = 0; i < partJsonArray.length(); i++){ %> <% int bpid = Integer.parseInt(partJsonArray.getJSONObject(i).getString("bpid")); String partname = (String) partJsonArray.getJSONObject(i).getString("partname"); %> <option value="<%=bpid %>" <%if(_bpid == bpid){out.println("selected");} %>><%=partname %></option> <%} %> </select> <select id="btid" name="btid"> <%for(int n = 0; n < _typeJsonArray.length(); n++){ %> <% int _btid = Integer.parseInt(_typeJsonArray.getJSONObject(n).getString("btid")); String _typename = (String) _typeJsonArray.getJSONObject(n).getString("typename"); %> <option value="<%=_btid %>" <%if(btid == _btid){out.println("selected");} %>><%=_typename %></option> <%} %> </select>// 栏目 - 类型级联操作 $('#bpid').change(function(){ var option1 = "<option value='"; var option2 = "'>"; var option3 = "</option>"; var bpidValue = $("#bpid").val(); $.ajax({ url: "bInfo_cascadeTypeById.action", type: "post", data: "bpid="+bpidValue, error: function(){ alert('栏目类型关联失败'); $('#errorMsg').html("栏目类型关联失败,原因:该栏目下没有类型,故无法修改业务"); $('#btid').html(option1+0+option2+"==选择类型=="+option3); }, success : function(result){ var dataObj = eval("("+result+")");//转换为json对象 // alert(dataObj.Table.length);//输出root的子对象数量 var a; for(var i = 0; i < dataObj.Table.length; i++){ a += option1 + dataObj.Table[i].btid + option2 + dataObj.Table[i].typename + option3; } $('#btid').html(a); } }); }); ajax在级联层次比较少的情况下(<=3)下很好用。层次很多的时候,估计只能用request到server刷新数据了 我认为楼上的太麻烦了,有很多方法,当然要选择简单的,就用表单隐藏域了,把数据存储到session或是request这中,然后在根据你的判断 比如省份province和城市city的级联,把你保存好的数据存储到session或request中,然后引用Jquery<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script><script type="text/javascript">$(function() { $("#province option[value='<s:property value="#session.userinfo.province"/>']").attr("selected", true); //value设置成你保存好的省份数据 $("#city option[value='<s:property value="#session.userinfo.city"/>']").attr("selected", true); //values设置成你保存好的城市数据})</script> 求助:SpringMVC中JSP文件不能进行Redirect处理。 我在学习hibernate的二级缓存的时候为什么会出现这样的错误 tomcat部署报错 win 2000 不能显示左边的树型框架 如何接收一个用户上线的信息的 连接数据库(mysql)出错,高手进来指教,谢谢.(初学者) 初学者,请大家帮忙看看。JSP的问题。 Servlet怎么引用别名啊,大家帮忙看看啊! 怎么在jsp页面上画条形和拄状统计图,jfreechart怎么用? tomcat 不能启动????? 用ERP/OA等系统换其它项目,源码 Struts2 树节点 链接
function ajaxFunctionType(){
var xmlHttp;
try{
xmlHttp = new XMLHttpRequest();
}catch(e){
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
alert("not support");
return false;
}
}
}
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
var xmlDoc = xmlHttp.responseXML;
var ops = document.post.type; //删除之前残留的类型
while(ops.length>0){
ops.remove(0);
}
for(var i = 0 ; i< xmlDoc.getElementsByTagName("name").length; i++){ //循环添加类型
var op = document.createElement('option');
op.text = xmlDoc.getElementsByTagName("name")[i].firstChild.nodeValue;
var se=document.post.type;
try
{
se.add(op,null); // standards compliant
}
catch(ex)
{
se.add(op); // IE only
}
}
//document.user.userName.value = xmlDoc.getElementsByTagName("userName")[0].firstChild.nodeValue;
}else{
alert("error:" + xmlHttp.status);
}
}
}
var modelSe = document.post.model;
//proSe.options[proSe.selectedIndex].text--需要经过转码,不然在服务器端不管怎么设置都会出现乱码
xmlHttp.open("POST","PostAction!getTypeByModel?mdId="+encodeURI(modelSe.options[modelSe.selectedIndex].value),true);
xmlHttp.send(null);
}
</script><form name="post">
帖模块:
<!--
<select id="model" onchange="ajaxFunctionType()">
<s:iterator >
</s:iterator>
</select>
-->
<s:select id="model" list="postModelMap" onchange="ajaxFunctionType()">
</s:select>
<br /><br />
帖子类型:
<select id="type">
</select>
</form>前两天刚刚帮朋友解决的
<select id="bpid" name="bpid">
<option value="0">==选择栏目==</option>
<%for(int i = 0; i < partJsonArray.length(); i++){ %>
<%
int bpid = Integer.parseInt(partJsonArray.getJSONObject(i).getString("bpid"));
String partname = (String) partJsonArray.getJSONObject(i).getString("partname");
%>
<option value="<%=bpid %>" <%if(_bpid == bpid){out.println("selected");} %>><%=partname %></option>
<%} %>
</select>
<select id="btid" name="btid">
<%for(int n = 0; n < _typeJsonArray.length(); n++){ %>
<%
int _btid = Integer.parseInt(_typeJsonArray.getJSONObject(n).getString("btid"));
String _typename = (String) _typeJsonArray.getJSONObject(n).getString("typename");
%>
<option value="<%=_btid %>" <%if(btid == _btid){out.println("selected");} %>><%=_typename %></option>
<%} %>
</select>// 栏目 - 类型级联操作
$('#bpid').change(function(){
var option1 = "<option value='";
var option2 = "'>";
var option3 = "</option>";
var bpidValue = $("#bpid").val();
$.ajax({
url: "bInfo_cascadeTypeById.action",
type: "post",
data: "bpid="+bpidValue,
error: function(){
alert('栏目类型关联失败');
$('#errorMsg').html("栏目类型关联失败,原因:该栏目下没有类型,故无法修改业务");
$('#btid').html(option1+0+option2+"==选择类型=="+option3);
},
success : function(result){
var dataObj = eval("("+result+")");//转换为json对象
// alert(dataObj.Table.length);//输出root的子对象数量
var a;
for(var i = 0; i < dataObj.Table.length; i++){
a += option1 + dataObj.Table[i].btid + option2 + dataObj.Table[i].typename + option3;
}
$('#btid').html(a);
}
});
});
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
$(function() {
$("#province option[value='<s:property value="#session.userinfo.province"/>']").attr("selected", true);
//value设置成你保存好的省份数据
$("#city option[value='<s:property value="#session.userinfo.city"/>']").attr("selected", true);
//values设置成你保存好的城市数据
})
</script>