tp写的三级联动

使用tp框架写的三级联动,仅供参考哦!!!

//控制器获取省市区
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller{
    //获取省
    public function index(){
        $region_data=S('region_data');
        if(!empty($region_data)){
            $region_data=S('region_data');
        }else{
            $region_data=M('region')->where('pid=1')->select(); 
            S('region_data',$region_data);
        }
        $this->assign('region_data',$region_data);
        $this->display();
    }
    //获取城市
    function getCity(){
       if(IS_POST){
        $pid=  intval($_POST['pid']);  
            if(empty($pid)){
             echo json_encode(array('status'=>0,'msg'=>'稍后重试'));
             exit;
            }
            $city_data=S('city_data'.$pid);
            if(empty($city_data)){
             $city_data=M('region')->where('pid='.$pid)->select();
             S('city_data'.$pid,$city_data);
            }
            if(empty($city_data)){
               echo json_encode(array('status'=>0,'msg'=>'稍后重试'));
               exit;
            }
            echo json_encode(array('status'=>1,'data'=>$city_data));  
       } 
    }
    
    //获取地区
    function getProvince(){
        $pid=intval($_POST['pid']);
            if(empty($pid)){
                echo json_encode(array('status'=>0,'msg'=>'稍后重试'));
                exit;
            }
            $province_data=S('province_data'.$pid);
            if(empty($province_data)){
                $province_data=M('region')->where('pid='.$pid)->select();
                S('province_data'.$pid,$province_data);
            }
           if(empty($province_data)){
               echo json_encode(array('status'=>0,'msg'=>'稍后重试'));
               exit;
            }
            echo json_encode(array('status'=>1,'data'=>$province_data));   
    }
}

下边是关于三级联动的js操作:

 //index.html
    省份: < select name = "" id = "city" >
            <foreach name = "region_data" item = "vo" >
             <option value = "{$vo.id}" >{$vo . name}</option >   
            </foreach>
        </select >
        <select  id = "province" >
            <option value = "" > 请选择城市</option >
        </select >
        <select id = "area" >
            <option value = "" > 请选择地区</option >
        </select >
         <script type = "text/javascript" src = "jquery-1.7.2.min.js"></script >
         <script type = "text/javascript" >
        $(function () {
            $('#city') . change(function () {
                var
                pid = $(this) . val();
                $.post("{:U('Index/getCity')}",{'pid':pid},function (data){
                    if (data . status) {
                        var
                        html = "<option value=''>请选择城市</option>";
                        $.each(data . data, function (i,item){
                            html += "<option value=" + item . id + ">" + item . name + "</option>";
                        });
                        $('#province') . html(html);
                    } else {
                        alert(data . msg);
                    }
                },'json');  
                });
            $('#province') . change(function () {
                var
                p_id = $(this) . val();
                $.post("{:U('Index/getProvince')}",{'pid':p_id},function (data){
                    if (data . status) {
                        var
                        html = "<option value=''>请选择城市</option>";
                        $.each(data . data, function (i,item){
                            html += "<option value=" + item . id + ">" + item . name + "</option>";
                        });
                        $('#area') . html(html);
                    } else {
                        alert(data . msg);
                    }
                },'json');  
               });
        });
         </script >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值