不操作数据库,js解析json三级联动

1.后台转换成json写入js文件

    public function index()
    {
        // region_type     1 省份   2 城市   3 区县
        // 获取省  一维数组
        $arr1 = DB::table('region')->where('region_type',1)->get();
        foreach($arr1 as $k => $v){
            if($v->parent_id == 1){
                $province[$v->region_id] = $v->region_name;
            }
        }
        // print_R($province);die;
        
        //获取城市
        $arr2 = DB::table('region')->where('region_type',2)->get();
        foreach($arr2 as $k => $v){
            foreach($province as $kk => $vv){
                // $a[$v->region_id] = $v->region_name;
                if($v->parent_id == $kk){
                    $city[$kk][$v->region_id] = $v->region_name;
                    $cityId[$v->region_id] = $v->region_id;
                }
            }
        }
        // print_r($city);die;
        
        //获取县城
        $arr3 = DB::table('region')->where('region_type',3)->get();
        foreach($arr3 as $k => $v){
            foreach($cityId as $kk => $vv){
                if($v->parent_id == $vv){
                    $area[$kk][$v->region_id] = $v->region_name;
                }
            }
        }
        // print_R($area);die;

        $country['province'] = $province;
        $country['city'] = $city;
        $country['area'] = $area;
        // print_R($country);die;
        $filename = "area.js";
        file_put_contents($filename,"var json=".json_encode($country));
        return view('admin/Area');
    }

2.前台html代码

省份<select id="province" οnchange="province(this)">
            <option value="">--请选择--</option>
        </select>
        城市<select id="city" οnchange="city(this)">
            <option value="">--请选择--</option>
        </select>
        区/县<select id="area">
            <option value="">--请选择--</option>
        </select>

3.js代码

<script src="{{URL::asset('/')}}area.js"></script>
<script src="js/jquery.js"></script>
<script>
        var json = eval(json);
        var str = '<option value="">--请选择--</option>';
        for(i in json.province){
            str += '<option value="'+i+'">'+json.province[i]+'</option>';
        }
        $("#province").html(str);
        $("#city").html('<option value="">--请选择--</option>');
    //根据省份查询出城市
    function province(p_id){
        var p_id = $(p_id).val();
        var st = '<option value="">--请选择--</option>';
            for( a in json.city[p_id]){
                st += '<option value="'+a+'">'+json.city[p_id][a]+'</option>';
            }
        $("#city").html(st);
        $("#area").html('<option value="">--请选择--</option>');
    }
    // 根据城市查询出区/县
    function city(c_id){
        var c_id = $(c_id).val();
        var sr = '<option value="">--请选择--</option>';
            for( a in json.area[c_id]){
                sr += '<option value="'+a+'">'+json.area[c_id][a]+'</option>';
            }
        $("#area").html(sr);
    }
</script>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值