Spring MVC+JSP能不能实现三级联动
大概知道是用JQuery来实现的对吧,但是具体怎么做实在不清楚,求大神解答 展开
当然了,任何前后台都可以实现三级联动,下面是完整的示例代码,供参考:
jsp代码
<script type="text/javascript">
$(function() {
initProvinces();
});
/**
* 获取省列表
*/
function initProvinces() {
$('#province').empty();
$.ajax({
type : "POST",
url : basePath + "district/getProvinces.do",
success : function(data) {
$.each(data, function(i, it) {
$("<option value='" + it.id + "' />"
+ it.name + "<br>").click(function() {
initCities(it.id);
}).appendTo($('#province'));
});
}
});
}
/**
* 获取市列表
*/
function initCities(provinceID) {
$('#city').empty();
$.ajax({
type : "POST",
url : basePath + "district/getCities.do?province=" + provinceID,
success : function(data) {
$.each(data, function(i, it) {
$("<option value='" + it.id + "' />"
+ it.name + "<br>").click(function() {
initCounties(it.id);
}).appendTo($('#province'));
});
}
});
}
/**
* 获取区县列表
*/
function initCounties(cityID) {
$('#county').empty();
$.ajax({
type : "POST",
url : basePath + "district/getCounties.do?city=" + cityID,
success : function(data) {
$.each(data, function(i, it) {
$("<option value='" + it.id + "' />"
+ it.name + "<br>")
.appendTo($('#province'));
});
}
});
}
//……
</script>
<body>
选择地区:
<select id='province'><option>---省---</option></select>
<select id='city'><option>---市---</option></select>
<select id='county'><option>---区---</option></select>
</body>
spring MVC 代码:
@Controller
@RequestMapping(value = "/district")
public class districtController {
@Resource
private DistrictService districtService;
/**
* 获取省列表
* @return
* @throws Exception
*/
@RequestMapping(value = "getProvinces")
@ResponseBody
public Object getProvinces() throws Exception {
return districtService.getProvinces();
}
/**
* 获取市列表
* @param province
* @return
* @throws Exception
*/
@RequestMapping(value = "getCities")
@ResponseBody
public Object getCities(@RequestParam(value = "province") String province) throws Exception {
return districtService.getCities();
}
// 再往下级的获取方式和getCities方法都相同,所以此处略过
}
所有的级联都可以通用这样的方法,修改下参数、名称就行了。
3个select。 第一个select的option是写到页面的或者jsp标签。然后给这个select的change绑定事件,让这个事件去加载第二个select的option。同样,给第二个select也绑定一个change事件去加载第三个select的数据。
//绑定事件
$("#select1").live(change,function(){
$.ajax({
url:aaaa,//提交的地址
data:{
select1id:$("#select1").val();
}
type:'post',
datatype:'json',
success:function(return){
$("#select2 option").remove();//清空原来的选项
for(var i=0;i<return.length;i++)
{
$("#select2").append("<option val='"+return[i].value+"'> "+return[i].name+"</option>")
}
}
})
})
大概类似于上面我写的代码。 你改一改就可以用了。 如果有什么疑问欢迎继续追问。
能不能给详细点的注释,还有Controller里的方法能写出来看看嘛
。。你搜多级联动, 前人已经写过很多了。你让我再写一次也没什么意义了。
@requestMapping("/")
@responseBody
public List<City> getCitysByErea(String ereaid,HttpServletRequest request,HttpServletResponse response){
List<City> citys =cityService.getXXX(erarid);
return citys;
}
这个要根据你的后台写。 我这里都是瞎编的。。你替换成你的实体类和方法就好了。