php ajax js写的 筛选框二级联动

14 篇文章 0 订阅

需求分析:

     老板让做一个三级菜单 ,一级菜单已经固定死, 所以需求就是通过点击渠道(二级),三级显示二级选项栏下面的参数

实现方式:

   想了一想 ,小case,就是前端用ajax请求后台,后台传给前台正确的值,显示到下拉列表就ok了嘛

一:前端代码

  下面是两个下拉列表,第一个是二级,第三个是三级,第二个设置一个点击事件onchange,也就是点击相应的下拉选项后走这个函数,这个函数里面写ajax和后端通讯,返回值再填入到三级里面。

<td><span style="color:red;">渠道:</span></td>
  <td>
    <select name="channel"  id="channel" value="<?php echo $channel?>" onchange="javascript:showAllKind();">
        <?php foreach ($data_channel as $key)
        { ?>
            <option value="<?php echo $key['channel_id'] ?>" ?> 

                <?php echo $key['channel_name']?>

            </option>
        <?php  }?>
    </select>
    </td>
    <td><span style="color:red;">类型:</span></td>
  <td>
    <select name="kind"  id="kind" value="<?php echo $kind?>">
        <?php foreach ($data_kind as $key)
            { ?>
                <option value="<?php echo $key['kind_id'] ?>" ?> 

                    <?php echo $key['kind_name']?>

                </option>
            <?php  }?>
        </select>
    </td>

2:javascript代码

代码很简单就是简单的一个和后端通信的ajax,以前用原声写的,这次用jQuery

<script type="text/javascript">
    function showAllKind()
    {
      //用第二种jQuery会好一点
      // var chann = document.getElementById("channel").value;
      var channel_id = $('#channel').val();
      $.ajax({
          type: "get",  
          url: "your controller Url",  
          data: "channel_id="+channel_id,
          success: function(data){
            //解析
            data = decodeURI(data);
            $('#kind').empty();
            var data = eval('(' + data + ')');
            if (data.length != "" && data.length != null) {
              for(var i = 0;i < data.length;i++){
                    $('#kind').append("<option value=" + data[i]['kind_id'] + ">"
                        + data[i]['kind_name'] + "</option>");
                }
            }
          }, 
        
    });  
    }
</script>

3:后端代码

    //ajax 通过渠道返回kind(类型) 
    public function ajaxReturnKind()
    {
        $return_data = array();

        $appid = $this->input->cookie("appid");
        $channel_id = $_REQUEST['channel_id'];
        $result = 数据库取到的值; 

        array_unshift($return_data, array('kind_id' => 0, 'kind_name' => "全部"));
        
        if(!empty($result))
        {
            foreach($result as $val)
            {
                array_push($return_data,array('kind_id'=>$val['kind_id'],'kind_name'=>db);
            }
        }
        echo json_encode($return_data);
    }

效果的话我不会弄动图就贴两张图片啦

感受一下 就是这效果 perfect

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值