Mybatis与Ajax实现省市区三级联动

1.先看一下效果图

在这里插入图片描述

1.我们先来看一下数据库

proinves city county 分别代表省,市,区的三张表
proinves的表
在这里插入图片描述
City表
在这里插入图片描述
County表
在这里插入图片描述

2.对应的service层

@Service
public class TestService {

    @Autowired
    ProvinceMapper provinceMapper;

    @Autowired
    CityMapper cityMapper;

    @Autowired
    CountyMapper countyMapper;

    /**
     * 获取所有省的信息
     * @return
     */
    public Msg getProvinces(){
        ProvinceExample example = new ProvinceExample();
        List<Province> list = provinceMapper.selectByExample(example);
        return Msg.success().add("list", list);

    }

    /**
     * 根据省份id获取市的信息
     * @param provinceId
     * @return
     */
    public Msg getCityByProvinces(Long provinceId){
        CityExample example = new CityExample();
        Criteria criteria = example.createCriteria();
        criteria.andProvinceidEqualTo(provinceId);
        List<City> list = cityMapper.selectByExample(example);
        return Msg.success().add("list", list);
    }


    /**
     * 根据市的id获取区的信息
     * @param CityId
     * @return
     */
    public Msg getCountyByCityId(Long CityId){
        CountyExample example = new CountyExample();
        com.atguigu.crud.bean.CountyExample.Criteria criteria = example.createCriteria();
        criteria.andCityidEqualTo(CityId);
        List<County> list = countyMapper.selectByExample(example);
        return Msg.success().add("list", list);

    }

}

3.Controller层.

@Controller
public class TestController {

    @Autowired
    TestService testService;

    @RequestMapping("/getProvinces")
    @ResponseBody
    public Msg getProvinces(){

        return testService.getProvinces();

    }


    @RequestMapping("/getCityByProvinceId")
    @ResponseBody
    public Msg getCityBuProvinces(Long provinceId){
        return testService.getCityByProvinces(provinceId);

    }


    @RequestMapping("/getCountyByCityId")
    @ResponseBody
    public Msg getCountyByCityId(Long CityId){
        return testService.getCountyByCityId(CityId);
    }
}

4.前台代码

HTML

<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%
        pageContext.setAttribute("APP_PATH", request.getContextPath());
        %>
<link rel="stylesheet"
        href="${APP_PATH}/static/bootstrap/css/bootstrap.css">
<script type="text/javascript"
        src="${APP_PATH}/static/js/jquery-2.0.0.min.js"></script>
</head>
<body>

<div class="form-group">
<label class="col-sm-2 control-label">Province</label>
<div class="col-sm-2">
<select class="form-control" name="dId" id="Province_add_select"
        οnchange="selectCitys(this)">
</select>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">City</label>
<!-- 部门提交部门id即可 -->
<div class="col-sm-2">
<select class="form-control" name="dId" id="City_add_select"
        οnchange="selectCountys(this)">
</select>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">County</label>
<div class="col-sm-2">
<select class="form-control" name="dId" id="County_add_select">
</select>
</div>
</div>

<script type="text/javascript">
        //页面加载时获取省的信息
        $(function() {
        getProvinces();
        });

        function getProvinces(ele) {

        $.getJSON("${APP_PATH}/getProvinces", function(data) {
        $.each(data.extend.list, function() {
        var opt = $("<option></option>").append(this.provincename)
        .attr("provinceid", this.provinceid);
        opt.appendTo("#Province_add_select");
        })
        });
        }

        //下拉框改变时获取相应市的信息                     
        function selectCitys(ele) {

        var provinceid = $("#Province_add_select").find("option:selected")
        .attr("provinceid");

        $.get("${APP_PATH}/getCityByProvinceId", {
        provinceId : provinceid
        }, function(data) {
        $("#City_add_select").empty();
        $.each(data.extend.list, function() {
        var opt = $("<option></option>").append(this.cityname)
        .attr("cityId", this.cityid);
        opt.appendTo("#City_add_select");
        })

        })

        }

        //下拉框改变时获取相应区的信息
        function selectCountys(ele) {
        var Cityid = $("#City_add_select").find("option:selected").attr(
        "cityId");
        $.get("${APP_PATH}/getCountyByCityId", {
        CityId : Cityid
        }, function(data) {
        $("#County_add_select").empty();
        $.each(data.extend.list, function() {
        var opt = $("<option></option>").append(this.countyname);
        opt.appendTo("#County_add_select");
        })

        })

        }
 
      /*  var e = ele.options[ele.selectedIndex].attr("provinceid");
       alert(e);        */
</script>


<script type="text/javascript"
        src="${APP_PATH}/static/bootstrap/js/bootstrap.js"></script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Ajax省市区三级联动是一种前端页面交互功能,用于在用户选择省份、城市和区县时实现动态加载相应数据的功能。 首先,需要在前端页面通过HTML代码创建三个下拉框,分别表示省份、城市和区县。然后,使用JavaScript编写前端的Ajax请求,通过发送异步请求到后端服务,获取数据。 在后端Java代码中,可以使用Spring MVC或Servlet等框架处理前端Ajax请求。首先,需要在数据库中建立相应的省市区数据表,并将数据存储在表中。然后,可以使用JDBC或MyBatis等数据库访问框架,编写相应的Java代码实现数据的查询和返回。 具体实现时,可以通过监听省份下拉框的变化事件,在事件处理函数内发送Ajax请求到后端服务,将当前选择的省份作为参数传递给后端。后端服务可以根据省份查询对应的城市数据,将城市数据返回给前端。 类似地,继续监听城市下拉框的变化事件,在事件处理函数内发送Ajax请求到后端服务,将当前选择的城市和省份作为参数传递给后端。后端服务可以根据城市和省份查询对应的区县数据,将区县数据返回给前端。 最后,根据返回的数据,在前端页面使用JavaScript动态修改区县下拉框的选项,实现三级联动效果。 总结起来,Java Ajax省市区三级联动通过前端页面的交互和后端的数据处理,实现了在用户选择省份、城市和区县时动态加载相应数据的功能。这种开发方式能够提高用户体验,同时满足实际业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值