前端使用jsp和js,后端使用java写一段三级联动下拉框的代码
时间: 2024-05-07 07:23:16 浏览: 157
简单的vue三级联动下拉框代码
3星 · 编辑精心推荐
以下是一个简单的三级联动下拉框的实现,前端使用JSP和JS,后端使用Java:
JSP页面:
```html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>三级联动下拉框</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="js/city.js"></script>
</head>
<body>
<form>
<select id="province" name="province">
<option value="">请选择省份</option>
</select>
<select id="city" name="city">
<option value="">请选择城市</option>
</select>
<select id="area" name="area">
<option value="">请选择区县</option>
</select>
</form>
</body>
</html>
```
JS文件(city.js):
```javascript
$(function() {
// 初始化省份
initProvince();
// 省份下拉框改变事件
$("#province").change(function() {
var provinceId = $(this).val();
if (provinceId != "") {
// 根据省份ID加载城市列表
loadCityByProvince(provinceId);
} else {
// 省份为空时,清空城市和区县列表
$("#city").empty();
$("#city").append("<option value=''>请选择城市</option>");
$("#area").empty();
$("#area").append("<option value=''>请选择区县</option>");
}
});
// 城市下拉框改变事件
$("#city").change(function() {
var cityId = $(this).val();
if (cityId != "") {
// 根据城市ID加载区县列表
loadAreaByCity(cityId);
} else {
// 城市为空时,清空区县列表
$("#area").empty();
$("#area").append("<option value=''>请选择区县</option>");
}
});
});
// 初始化省份列表
function initProvince() {
$.ajax({
url : "province",
type : "post",
dataType : "json",
success : function(result) {
if (result.code == 0) {
var provinces = result.data;
$.each(provinces, function(index, province) {
$("#province").append("<option value='" + province.id + "'>" + province.name + "</option>");
});
}
}
});
}
// 根据省份ID加载城市列表
function loadCityByProvince(provinceId) {
$.ajax({
url : "city",
type : "post",
data : {
provinceId : provinceId
},
dataType : "json",
success : function(result) {
if (result.code == 0) {
var cities = result.data;
// 清空城市列表
$("#city").empty();
$("#city").append("<option value=''>请选择城市</option>");
// 清空区县列表
$("#area").empty();
$("#area").append("<option value=''>请选择区县</option>");
// 添加城市列表
$.each(cities, function(index, city) {
$("#city").append("<option value='" + city.id + "'>" + city.name + "</option>");
});
}
}
});
}
// 根据城市ID加载区县列表
function loadAreaByCity(cityId) {
$.ajax({
url : "area",
type : "post",
data : {
cityId : cityId
},
dataType : "json",
success : function(result) {
if (result.code == 0) {
var areas = result.data;
// 清空区县列表
$("#area").empty();
$("#area").append("<option value=''>请选择区县</option>");
// 添加区县列表
$.each(areas, function(index, area) {
$("#area").append("<option value='" + area.id + "'>" + area.name + "</option>");
});
}
}
});
}
```
Java Controller:
```java
@Controller
public class RegionController {
@Autowired
private RegionService regionService;
@RequestMapping("/province")
@ResponseBody
public Result<List<Province>> getProvinceList() {
List<Province> provinceList = regionService.getProvinceList();
return Result.success(provinceList);
}
@RequestMapping("/city")
@ResponseBody
public Result<List<City>> getCityListByProvinceId(@RequestParam("provinceId") Integer provinceId) {
List<City> cityList = regionService.getCityListByProvinceId(provinceId);
return Result.success(cityList);
}
@RequestMapping("/area")
@ResponseBody
public Result<List<Area>> getAreaListByCityId(@RequestParam("cityId") Integer cityId) {
List<Area> areaList = regionService.getAreaListByCityId(cityId);
return Result.success(areaList);
}
}
```
其中,RegionService是一个Service层接口,用于提供查询省份、城市、区县数据的方法。省份、城市、区县的实体类分别为Province、City、Area,包含id和name两个属性。Result是一个通用的返回结果类,用于封装Controller层返回的结果,其中code表示状态码,0表示成功,非0表示失败;data表示返回的数据,可以是任意类型。
阅读全文