您的位置:首页 > 编程语言 > PHP开发

thinkphp5 三级联动

2017-07-27 18:04 495 查看
这次用thinkphp5做这个三级联动,遇到了个大坑啊,一直解决不了,后来还是被我的’yin威‘所折服!!!!

直接放代码吧

这是html的:

        <div class="row cl">
            <label class="form-label col-xs-4 col-sm-3">地区:</label>
            <div class="formControls col-xs-8 col-sm-9">
                 <!-- 省/自治区 -->                 
                <select name="pro" id="pro">
                    <option>--请选择省份--</option>
                    {volist name="pro" id="vo"}
                    <option value="{$vo.region_id}">{$vo.region_name}</option>
                    {/volist}
                </select>                
                <!-- 市/州 -->
                <select name="city" id="city">
                    <option>--请选择省份--</option>
                    <option value=""></option>                                
                </select>
                <!-- 区/县 -->
                <select name="county" id="county" >
                    <option>--请选择省份--</option>
                    <option value=""></option>
                </select>
            </div>
        </div>
这是ajax的:

<script type="text/javascript">
$('#pro').change(function(){
$prov=$('#pro').val();
$.ajax({
type:"post",
url:"{:url('hospital/getCity')}",
data:'pro='+$prov,
dataType:"json",
success:function(data){
var html ='<option value="">--请选择市/州--</option>';
for(var i in data){
html += '<option value="'+data[i].region_id+'">'+data[i].region_name+'</option>';
}
$('#city').html(html);
}
});

});

$('#city').change(function(){
$city=$('#city').val();
$.ajax({
type:"post",
url:"{:url('hospital/getCounty')}",
data:'city='+$city,
dataType:"json",
success:function(data){
var html ='<option value="">--请选择区/县--</option>';
for(var i in data){
html += '<option value="'+data[i].region_id+'">'+data[i].region_name+'</option>';
}
$('#county').html(html);
}
});
});

</script>
这是方法:
省份的数据首先要先遍历出来:

public function h_add(){

$area['area_deep']=1;
$pro=Db::name('region')->where($area)->select();
$this->assign('pro',$pro);
return $this->fetch();
}


然后是城市,区县:

public function getCity(){

if(request()->isPost()){
$pid=input('pro');

$a['parent_id']=$pid;
$city=Db::name('region')->where($a)->select();

return json($city);
}
}

public function getCounty(){

if(request()->isPost()){

$pid=input('city');
$a['parent_id']=$pid;
$county=Db::name('region')->where($a)->select();

return json($county);
}
}


这就是三级联动的全部了,说说我遇到的坑。

最开始做出来,城市和区县一直显示不了数据,这个坑让我弄了两天,心烦的要命。

今天查了日志,说是权限问题,然后开权限去了,再然后。。。就是你们现在看到的代码了

如果各位也有遇到我这种情况,也可能是权限问题!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  三级联动 php thinkphp5