需求分析:
老板让做一个三级菜单 ,一级菜单已经固定死, 所以需求就是通过点击渠道(二级),三级显示二级选项栏下面的参数
实现方式:
想了一想 ,小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 举报,一经查实,本站将立刻删除。