版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ylwsn21/article/details/76214843
这次用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);
}
}
这就是三级联动的全部了,说说我遇到的坑。
最开始做出来,城市和区县一直显示不了数据,这个坑让我弄了两天,心烦的要命。
今天查了日志,说是权限问题,然后开权限去了,再然后。。。就是你们现在看到的代码了
如果各位也有遇到我这种情况,也可能是权限问题!