java用ajax实现在两个list的级联的局部刷新
如题,例如,有两个多选框,第一个多选框选择一个公司名,下面的多选框的部门就随着公司名称的不同而变化。但是这个变化是局部的,而不是整个页面的刷新。还是菜鸟一只,请各位高手多多指教!最好有代码和注释。多谢多谢!
------解决方案--------------------用ajax来做吧。
第一框框加上一个onchange事件
在onchange的函数里面,写一个ajax请求,请求后台数据,后台将数据转成json传到前台。
在onchage 的回调函数里面接收到值。 用JS拼装放到第二个框
看看这个例子吧:
http://www.blogjava.net/supercrsky/articles/203698.html
------解决方案--------------------<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language="JavaScript" type="text/javascript">
//定义了城市的二维数组,里面的顺序跟省份的顺序是相同的。通过selectedIndex获得省份的下标值来得到相应的城市数组
var city=[
["北京","天津","上海","重庆"],
["南京","苏州","南通","常州"],
["福州","福安","龙岩","南平"],
["广州","潮阳","潮州","澄海"],
["兰州","白银"]
];
function getCity(){
var sltProvince=document.form1.province; //获得省份下拉框的对象
var sltCity=document.form1.city; //获得城市下拉框的对象
var provinceCity=city[sltProvince.selectedIndex - 1]; //得到对应省份的城市数组
sltCity.length=1; //清空城市下拉框,仅留提示选项
if(provinceCity!=null){ //将城市数组中的值填充到城市下拉框中
for(var i=0;i<provinceCity.length;i++){
sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]);
}
}
}
</script>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="" name="form1">
省
<select name="province" onchange="getCity()">
<option value="0">--请选择--</option>
<option value="直辖市">直辖市 </option>
<option value="江苏省">江苏省 </option>
<option value="福建省">福建省 </option>
<option value="广东省">广东省 </option>
<option value="甘肃省">甘肃省 </option>
</select>
城市
<select name="city">
<option value="0">--请选择--</option>
</select>
</FORM>
</BODY>
</HTML>
------解决方案--------------------直接在进入上面页面的action中,生成数组的串,然后页面上通过jstl获得即可
------解决方案--------------------Java code
$(document).ready(function(){
$("#province").change(function(){
var provinceId=$(this).val();
$.ajax({
url:"cascadeAction!showCities.action",
data:{"provinceId":provinceId},
dataType:"json",
type:"post",
success:function(result){
$("#city").empty();
for(var i=0;i<result.json.length;i++){
var str="<option>"+result.json[i].name+"</option>";
$("#city").append(str);
}
}
});
});
});
------解决方案--------------------
既然你使用了AJAX那么就是无刷新页面的,你的列表里面的数据是来自数据库的吧!