• 省市县三级联动



    一些Jquery插件比较省时省力,不用来回操作数据库,就能达到你想要的效果,页面修饰就要自己设计咯。而且使用数据库你还要事先把省市区数据存到数据库,耗费精力,及时有一些现成的sql文件可以导入。但是感觉好麻烦有没有,博主算是试了一次。

    好了说了很多废话,开始上代码吧:

    页面展示主要代码:

    <div class="form-group has-success col-md-4">
                            <label for="provinceId">选择省份:</label>
                            <select data-placeholder="省份" id="provinceId" name="province" class="form-control"
                                    data-rel="chosen">
                                <c:if test="${!empty provinceList}">
                                    <c:forEach items="${provinceList}" var="province">
                                        <option value="${province.provinceid}">${province.province}</option>
                                    </c:forEach>
                                </c:if>
                            </select>
                        </div>
                        <div class="form-group has-success col-md-4">
                            <label for="cityId">选择城市:</label>
                            <select data-placeholder="城市" name="city" id="cityId" class="form-control" data-rel="chosen">
                                <option>选择城市</option>
                            </select>
                        </div>
                        <div class="form-group has-success col-md-4" >
                            <label for="areaId">选择区域:</label>
                            <select data-placeholder="区域" name="area" id="areaId" class="form-control" data-rel="chosen">
                                <option>选择区域</option>
                            </select>
                        </div>



    页面js代码:

    <script type="text/javascript">
        /*页面加载就开始执行js*/
        $(document).ready(function () {
            $("#provinceId").change(function () {
                $.get("getCityByProvinceId/"+$("#provinceId").val(),function(data){
                    if(data.status){
                        var result = "<option>选择城市</option>";
                        $.each(data.obj,function(n,value){
                            result +="<option value='"+value.cityid+"'>"+value.city+"</option>";
                        });
                        $("#cityId").html('');
                        $("#cityId").append(result);
                    }
                },"json");
            });
            $("#cityId").change(function () {
                $.get("getAreaByCityId/"+$("#cityId").val(),function(data){
                    if(data.status){
                        var result = "<option>选择区域</option>";
                        $.each(data.obj,function(n,value){
                            result +="<option value='"+value.areaid+"'>"+value.area+"</option>";
                        });
                        $("#areaId").html('');
                        $("#areaId").append(result);
                    }
                },"json");
            });
        });
    </script>


    后台接收数据的代码:

        

    //获取所有的省份信息并传到前台
        @RequestMapping(value = "/schoolAddInput")
        public String addInput(ModelMap map) {
            map.addAttribute("provinceList", cityService.getAllProvince());
            return "school/addInput";
        }
        //    根据省份id获取城市数据后直接使用@ResponseBody装成json数据
        @RequestMapping(value = "/getCityByProvinceId/{id}")
        @ResponseBody
        public Json getCityByProvinceId(@PathVariable("id") String id){
            List<City> cityList = cityService.getCityByProvinceId(id);
            if (cityList!=null){
                return new Json(true,"success",cityList);
            } else {
                return new Json(false,"fail",null);
            }
        }
        //    根据城市id获取区域数据后直接使用@ResponseBody装成json数据
        @RequestMapping(value = "/getAreaByCityId/{id}")
        @ResponseBody
        public Json getAreaByCityId(@PathVariable("id") String id){
            List<Area> areaList = cityService.getAreaByCityId(id);
            if (areaList!=null){
                return new Json(true,"success",areaList);
            } else {
                return new Json(false,"fail",null);
            }
        }
    服务层代码:
    
    @Service
    public class CityService {
        @Inject
        private CityDao cityDao;
        @Inject
        private ProvinceDao provinceDao;
        @Inject
        private AreaDao areaDao;
        public List<Province> getAllProvince() {
            return provinceDao.list();
        }
        public List<City> getCityByProvinceId(String id) {
            return cityDao.getCityByProvinceId(id);
        }
        public List<Area> getAreaByCityId(String id) {
            return areaDao.getAreaByCityId(id);
        }
    }
    DAO层代码不用说你们猜也能猜到吧(*^__^*) …… 简单的查询语句。数据库持久层我使用的是mybatis框架分享其中的一个mapper文件 CityDao.xml
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.hyt.dao.CityDao" >
      <resultMap id="BaseResultMap" type="com.hyt.domain.City" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="cityID" property="cityid" jdbcType="VARCHAR" />
        <result column="city" property="city" jdbcType="VARCHAR" />
        <result column="father" property="father" jdbcType="VARCHAR" />
      </resultMap>
      <select id="getCityByProvinceId" resultMap="BaseResultMap" parameterType="java.lang.String">
        select * from hat_city where father = #{id,jdbcType=VARCHAR}
      </select>
    </mapper>


    是不是很简单,的确很简单。但是使用这种获取省市区三级联动,还是不好。直接使用插件多好~大家说是吧,全国省市级三级联动jquery代码自己找度娘吧! 顺便也锻炼下自己的搜寻知识的能力~
    全国城市sql文件(mysql版本):(点击就可以获取地址~)

    demo源码下载地址:https://git.oschina.net/zhengweishan/GetProvinceCityArea


  • 相关阅读:
    安装Android studio出现'tools.jar' seems to be not in Android Studio classpath......的解决方法
    jdk的设置及安装android studio提示does not point to a valid jvm问题
    第七章 : Git 介绍 (下)[Learn Android Studio 汉化教程]
    netcore使用AutoFac实现AOP
    netcore使用Autofac实现依赖注入
    新创建的netcore项目报错
    asp.net core 使用log4net日志组件
    Unity容器实现AOP面向切面编程
    点击a链接防止滚动条滚动
    wkhtmltopdf 自定义字体未生效或中文乱码
  • 原文地址:https://www.cnblogs.com/fireinwater/p/6427539.html
Copyright © 2020-2023  润新知