ThinkPHP + Layui 省、市、区三级联动

特别申明:不够完美,有BUG

1、数据表

链接:https://pan.baidu.com/s/17SHcihAi1Mzs047B3Aq1BA

提取码:1234

2、控制器:在controller 目录下面 新建一个 Shengshiqu.php 文件

3、文件代码如下:

<?php
declare (strict_types = 1);

namespace app\controller;
use think\facade\View;
use think\facade\DB;
use think\facade\Request;


class Shengshiqu
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        if(request()->isGet()){
            return View::fetch();
        }else{
            $area = DB::table('area')
            ->select();
            return json(['code' =>0,'count'=>$count,'data' =>$area]);
        }
        
    }
    public function treetable(){
        return View::fetch();
    }

    //获取省份数据
    public function getProvince(){
        $province = DB::table('area')
        ->where('level',1)
        ->select();

        return json(['code' => 0, 'data' => $province]);
    }

    // 接收前端 的 省份 id 获取城市数据
    public function getCity(){
        $provinceId =Request::param("provinceId");

        $city = DB::table('area')
        ->where('pid',$provinceId)
        ->select();

        return json(['code' => 0, 'data' => $city]);
    }

    // 接收前端 的 城市 id 获取 区/县数据
    public function getArea(){
        $cityId = Request::param("cityId");

        $area = DB::table('area')
        ->where('pid',$cityId)
        ->select();

        return json(['code' => 0, 'data'=>$area]);
    }
}

4、在 View 文件夹下 新建 一个 Shengshiqu 的文件夹

5、在 Shengshiqu 文件夹 下面 新建一个index.html 文件

6、index.html文件代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="\static\layui\css\layui.css">
        <title>Document</title>
</head>
<body>
        <form class="layui-form" action="">
                <div class="layui-form-item">
                        <label class="layui-form-label required">地区选择</label>
                        <div class="layui-input-inline" style="width: 100px;">
                                <select name="province" lay-verify="required" lay-filter="province">
                                </select>
                        </div>
                        <div class="layui-input-inline" style="width: 100px;">
                                <select name="city" lay-verify="required" lay-filter="city">
        
                                </select>
                        </div>
                        <div class="layui-input-inline" lay-filter="area" style="width: 100px;">
                                <select name="area" lay-verify="required">
        
                                </select>
                        </div>
                </div>

                <div class="layui-form-item">
                        <input type="submit" value="提交">
                </div>
        </form>

        <table class="layui-table" id="area"></table>

        <script src="\static\layui\layui.js"></script>
        <script src="\static\jquery\jquery.js"></script>
        
        <script>
                layui.use(['form','table'],function(){
                        var form = layui.form;
                        var table = layui.table;

                        // 更新 "省份" 下拉框列表
                        getProvinces();

                        // 点击 "省份" 下拉框事件,更新 "城市" 下拉框下拉列表,移除区/县下拉数据
                        form.on('select(province)',function(e){
                                var provinceId = e.value;
                                getCitys(provinceId);   

                                $('select[name=area]').children().remove();
                        });

                        // 点击 "城市" 下拉框事件,更新 "区/县" 下拉框下拉列表
                        form.on('select(city)',function(e){
                                var cityId = e.value;
                                getAreas(cityId);   
                        }); 

                        // 获取省份数据
                        function getProvinces(){
                                $.get("/index.php/Shengshiqu/getProvince",function(e){
                                        // 清空 name 等于 province 的 select 标签
                                        $('select[name=province]').children().remove();

                                        var Provinces = e.data;

                                        for(var i=0;i<Provinces.length;i++){
                                                // 创建一个 option 标签
                                                let option = document.createElement("option");
                                                // 设置 option 的属性
                                                option.setAttribute("value", Provinces[i].id);
                                                option.innerText = Provinces[i].shortname;
                                                // 把option 标签 添加到 select 标签中
                                                $('select[name=province]').append(option);
                                        }
                                        //渲染下拉框
                                        form.render("select");
                                })
                        }

                        // 根据省份Id获取城市数据
                        function getCitys(provinceId){
                                $.get("/index.php/Shengshiqu/getCity",{provinceId:provinceId},function(e){
                                        $('select[name=city]').children().remove();
                                        var Citys = e.data;

                                        for(var i=0;i<Citys.length;i++){
                                                // 创建一个 option 标签
                                                let option = document.createElement("option");
                                                // 设置 option 的属性
                                                option.setAttribute("value", Citys[i].id);
                                                option.innerText = Citys[i].shortname;
                                                // 把option 标签 添加到 select 标签中
                                                $('select[name=city]').append(option);
                                        }
                                        //渲染下拉框
                                        form.render("select");
                                })
                        }

                        // 根据城市Id获取县/区数据
                        function getAreas(cityId){
                                $.get("/index.php/Shengshiqu/getArea",{cityId:cityId},function(e){
                                        $('select[name=area]').children().remove();
                                        var Areas = e.data;

                                        for(var i=0;i<Areas.length;i++){
                                                // 创建一个 option 标签
                                                let option = document.createElement("option");
                                                // 设置 option 的属性
                                                option.setAttribute("value", Areas[i].id);
                                                option.innerText = Areas[i].shortname;
                                                // 把option 标签 添加到 select 标签中
                                                $('select[name=area]').append(option);
                                        }
                                        //渲染下拉框
                                        form.render("select");
                                })      
                        }


                })


        </script>
</body>
</html>

全部评论
不够完美什么的,属于谦虚了
1 回复 分享
发布于 2023-05-27 21:57 上海
可以将就用,但是不完美
点赞 回复 分享
发布于 2023-05-27 17:41 广东

相关推荐

昨天 20:22
重庆大学 Java
字节暑期刚入职四天,因为是年前,所以很多正职都放假走了,也就没有给我分配mt,然后有一个老哥在我来的时候给我发了一个landing手册,然后还有关于部门业务的白皮书,还有一些业务代码。然后本人是java面的,进来第一次接触go语言&nbsp;前面几天熟悉了一下go的语法和go的框架,可以读但是还不太会写,然后业务白皮书也看的很头疼,包括landing手册里要了解的很多东西说实话我看文档真的快看死了,一个嵌套一个,问题是我还完全不知道咋用这个我了解的东西,还有就是那个项目代码,那个老哥喊我去写写单测,熟悉一下go的语法,但也进行的很困难(这是我第一段实习,之前都是springboot那一套,真不太熟悉这个)想问问大家的建议,就是我从现在开始到在开年回来之前应该做些什么,我目前就一个想法&nbsp;就是复现一个landing手册上的go框架小项目&nbsp;就是相当于帮自己锻炼锻炼怎么写go&nbsp;或者各位大佬有没有更好的锻炼go语法的建议还有就是大家都在说vibe&nbsp;coding,那我应该怎么锻炼自己使用ai的能力,感觉我除了给一些需求然后它给我生成代码,好像就没别的用法了,那些什么工作流、拆解、skill啥的都不知道从哪一个地方开始,包括我现在正在实习,不知道精力该怎么分配,去网上想找找关于agent开发的一些学习流程,说实话,众说纷纭,有的是从python开始打基础然后系统学那些rag&nbsp;prompt&nbsp;langchain&nbsp;mcp等等,有的是说直接找一个github上的ai项目然后反复问ai,我确实有点迷茫,恳求各位大佬能留下你们宝贵的建议,我一定认真反复深刻学习有一说一&nbsp;我觉得字节饭挺好吃的!
Jasonnnnnn...:直接把项目代码喂给AI然后让它帮你分析,如果组里已经有一些流程图总结的话最好,没有的话自己画一个 Go的话其实只要把基础语法搞明白就行了,项目里很多都是直接让ai帮你写好然后自己稍微改下,不用学的特别深 ai的话,可以自己写一些md文件来搞点小东西,但除非你打算转算法,否则不用把rag langchain学的特别深,了解下就行了
字节跳动公司福利 1371人发布
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务