微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

需求分析:

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

实现方式:

   想了一想 ,小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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐