实现省市二级联动(select下拉框)

前端页面代码

     <tr>
                                    <td width="106" height="28" align="right" class="hei"> 乡(镇):</td>
                                    <td valign="middle" class="p_l">
                                        <a href="#" class="textbox-icon combo-arrow" icon-index="0" tabindex="-1"
                                           style="width: 18px; height: 20px;"></a>
                                        <span></span>
                                        <select id="street" lay-filter="selectTheme" name="street">
                                            <option value="p_l"></option>
                                            <option cclass="textbox combo" style="width: 100px; height: 20px;"
                                                    th:each="practice:${practices}"
                                                    th:value="${practice.name}" th:text="${practice.name}"
                                                    th:if="${practice.pid eq 0}"></option>
                                        </select>
                                </tr>

                                <tr>
                                    <td width="106" height="28" align="right" class="hei">村:</td>
                                    <td valign="middle" class="p_l">
                                            <span class="textbox combo" style="width: 118px; height: 20px;">
                                            <span class="textbox-addon textbox-addon-right" style="right: 0px;">
                                            <p class="textbox-icon combo-arrow" icon-index="0" tabindex="-1"
                                               style="width: 18px; height: 20px;"></p>
                                            </span><select id="community" name="community" class="textbox-text validatebox-text textbox-prompt">
                                                  </select>
                                            </span>
                                </tr>

 

 js代码

 <script src="layui/layui.js"></script>
    <script type="text/javascript" >
        layui.use(['form'], function() {
            var $ = layui.$;
            var form = layui.form;
            form.on('select(selectTheme)', function (data) {//对应lay-filter="selectTheme"
                var index1 = $('#street option:selected').val();//对应id="board"  得到一级菜单选中值的value
                var optionJson = [];
                $.ajax({
                    url: "/selectTheme",//对应controller层
                    type: "post",
                    data: {"bo": index1},//将选中值的value传给controller
                    datatype: "json",
                    success: function (data) {
                        optionJson = data;
                        console.log(data);
                        var selectObj = document.getElementById("community");//对应id="theme"
                        selectObj.options.length = 0;
                        for (var i = 0; i < data.length; i++) {
                            selectObj.add(new Option(optionJson[i].name, optionJson[i].id));//对应数据库中名字,两个参数是(文本,value)
                        }
                        form.render();
                    }
                })
            });
        })
    </script>

 Controller

    /**
     * js级联
     * author:严天贺
     */
    @RequestMapping( "selectTheme")
    @ResponseBody
    public List<Practice> selectCollege(HttpServletRequest request) {

        String board = request.getParameter("bo");//得到value值
        QueryWrapper<Practice> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("name",board);
        Practice practice=practiceService.getOne(queryWrapper);
        Long id=practice.getId();
        QueryWrapper<Practice> queryWrapper1=new QueryWrapper<>();
        queryWrapper1.eq("pid",id);
        List<Practice> practices = practiceService.list(queryWrapper1);//在数据库查询
        return practices;
    }

 这里尤其要注意@ResponseBody这个注解不能少

 

 小结:没有啥不可能,但是没有bug可不行。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ajax 省市二级联动是一种常见的前端技术,它可以实现选择省份后,自动加载该省份下的城市列表,从而实现省市二级联动的效果。下面是一个简单的实现步骤: 1. 在 HTML 页面中,定义两个下拉框,一个用于选择省份,一个用于选择城市。 2. 在 JavaScript 中,使用 Ajax 技术向服务器请求省份列表,并将其填充到省份下拉框中。 3. 当用户选择省份时,使用 Ajax 技术向服务器请求该省份下的城市列表,并将其填充到城市下拉框中。 下面是一个简单的代码示例: HTML 代码: ``` <select id="province"> <option value="">请选择省份</option> </select> <select id="city"> <option value="">请选择城市</option> </select> ``` JavaScript 代码: ``` // 请求省份列表 $.ajax({ url: '/api/provinces', success: function(data) { // 将省份列表填充到省份下拉框中 var $province = $('#province'); $.each(data, function(index, province) { $province.append('<option value="' + province.id + '">' + province.name + '</option>'); }); } }); // 当用户选择省份时,请求该省份下的城市列表 $('#province').on('change', function() { var provinceId = $(this).val(); if (provinceId) { $.ajax({ url: '/api/cities?provinceId=' + provinceId, success: function(data) { // 将城市列表填充到城市下拉框中 var $city = $('#city'); $city.empty().append('<option value="">请选择城市</option>'); $.each(data, function(index, city) { $city.append('<option value="' + city.id + '">' + city.name + '</option>'); }); } }); } else { // 如果用户选择了“请选择省份”,则清空城市下拉框 $('#city').empty().append('<option value="">请选择城市</option>'); } }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值