为什么80%的码农都做不了架构师?>>>   

首先是数据库的设计。分类表叫cate.

我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id).

父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。

数据库有内容后,就可以开始写代码,进行二级联动的实现。

先在后台php获取所有pid为0的数据,保存到$cate中,然后在第一层的<select>中用foreach循环输出。

Html代码:

                   <select name="type" size="1" id="type"><option>请选择类型</option><foreach name='cate' item='v'><option value="{$v['ca_id']}">{$v.ca_name}</option></foreach></select>标签:<select name="lable" size="1" id="lables"></select>

Ajax代码:

  $('#type').click(function(){$(this).change(function(){var objectModel = {};var   value = $(this).val();var   type = $(this).attr('id');objectModel[type] =value;$.ajax({cache:false,type:"POST",url:site.web+"lable",dataType:"json",data:objectModel,timeout:30000,error:function(){alert(site.web+"lable");},success:function(data){$("#lables").empty();var count = data.length;var i = 0;var b="";for(i=0;i<count;i++){b+="<option value='"+data[i].ca_id+"'>"+data[i].ca_name+"</option>";}$("#lables").append(b);}});});});

Ajax代码在第一层类型改变后触发,ajax方法的主要参数有

1.url:后台接收ajax的地址;

2.data:传到后台的数据,一般用json传递;这里传递的是选中类的id值。

3.type:传递方法,有get和post方法,我一般用post,可以传输的数据比get多,安全性也高些;

4.error:ajax执行失败的方法;

5.success:ajax执行成功的方法,也就是回调函数。这里在执行success时,我先用empty()清空了第二个下拉菜单的内容,然后再输出从后台获取的数据。

下面是Thinkphp接收ajax数据并处理的页面

    //后台ajax验证$result = array();$cate =$_POST['type'];$result = M('cate')->where(array('ca_pid'=> $cate))->field('ca_id,ca_name')->select();$this->ajaxReturn($result,"JSON");

Thinkphp的I()方法其实可以看成$_POST[],这样来获取ajax传递过来的第一层选中内容的id,接着,获取其子类,然后用ajaxReturn()返回给ajax,这里设置了返回数据以json形式,所以ajax会以json形式接收到数据

原生php的返回数据方式:

   //搜索结果为$result.....echo json_encode($result);

这样就完成了2级联动下拉菜单的实现,需要注意的是,url得保证正确,后台接收到也需要有返回值,不然ajax也不会执行success方法的。

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2015-08-9

经过优化的多级联动:

其实这块可以用于2级联动或以上的联动

<select class="link_age" change-select="link_tow" name="name1">
<!--
select中的 option 的结构统一如下:--><option value="1">typeName</option><option value="2">typeName2</option>
</select>
<select class="link_age link_tow" change-select="link_three" name="name2"></select>
<select class="link_age link_three" change-select="link_four" name="name3"></select>
<select class="link_four" name="name4"></select><script type="text/javascript"><!--//<![CDATA[$('.link_age').change(function(){var objectModel = {};var value = $(this).val();var type = $(this).attr('id');var change_select = $(this).attr('change-select');//需要被改变的select内容objectModel[type] =value;$.ajax({cache:false,type:"POST",url:"http://test.jceee.com/jceeeTest.php" //请换上自己的接口地址 dataType:"json",data:objectModel,timeout:30000,error:function(){alert(site.web+"lable");},success:function(data){$("." + change_select).empty();var count = data.length;var i = 0;var b="";if (count > 0) {for ( i = 0; i < count; i ++) {b += "<option value='" + data[i].ca_id + "'>";b += data[i].ca_name+"</option>";}}$("." + change_select).append(b);}});});//]]>--></script>

需要增加或删减联动,只需要改html代码:

<select class="link_age link_two" change-select="link_three"></select>
属性class:
----link_age是必要的类属性,用于数据改变时,触发ajax,如果没有下一级,就不需要加上了。
----link_two这个值需要唯一,如这个例子是link_two,其上级link_one的change-select(影响的联动菜单)所指向的就是link_two. 回调时会对应地修改其内容。
属性change-select
这个属性所填的是回调后修改内容的class

转载于:https://my.oschina.net/jiec/blog/219797

ThinkPHP + Ajax 实现2级联动下拉菜单相关推荐

  1. php没有上级分类的联动,ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单...

    首先是数据库的设计.分类表叫cate. 我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为 ...

  2. addoption php,无忧建站-ajax+php无刷新二级联动下拉菜单(省市联动)源码

    /** * ajax无刷新二级联动下拉菜单(省市联动) * * @author      arcow * @version     1.0 * @lastupdate  2005-12-29 * */ ...

  3. php下拉列表 二级 联动,PHP+Ajax实现二级联动下拉菜单!

    正文 字体大小: 中 PHP+Ajax实现二级联动下拉菜单! (2009-12-05 01:11:39) 标签: 杂谈 数据库 .................................... ...

  4. php ajax联动下拉列表,PHP和Ajax实现二级联动下拉菜单(代码、详细注释)

    数据库 ................................................................................................ ...

  5. popwindow下拉筛选 二级联动_职场人必备!一分钟搞定Excel二级联动下拉菜单

    对于一级下拉菜单的设置,相信经常使用Excel的用户都不陌生,那么,二级联动下拉菜单又是什么呢?与一级下拉菜单有什么关系呢? 二级联动下拉菜单是根据一级下拉菜单内容的变化而变化的.大家都知道,不同的部 ...

  6. dropdownlist三级联动怎么实现_Excel下拉菜单不会做?15秒教会你制作一二三级联动下拉菜单,从此做表不求人!...

    Hi,各位叨友们好呀!我是叨叨君~ 我们都知道,在使用Excel表格统计数据的时候,为了方便录入,通常会在Excel中设置下拉菜单,以便我们输入相同的内容. 那么,Excel中一级.二级.三级联动下拉 ...

  7. 中国地区三级联动下拉菜单的实现

    1.首先是js文件(area.js): 1 function Dsy() 2 { 3 this.Items = {}; 4 } 5 Dsy.prototype.add = function(id,iA ...

  8. 下拉默认选择_在Excel中制作二级联动下拉菜单,太有用了

    对于一级下拉菜单的设置,相信经常使用Excel的用户都不陌生,那么,二级联动下拉菜单又是什么呢?与一级下拉菜单有什么关系呢? 二级联动下拉菜单是根据一级下拉菜单内容的变化而变化的.大家都知道,不同的部 ...

  9. dw二级联动下拉菜单插件 宋君墨_Excel实例——一级、二级、多级下拉菜单一次讲透...

    啥叫下拉菜单?啥叫一级?二级?多级?你们都在说啥? 一级下拉菜单 其实是一级,这里就不再多次强调是一级了,就是下拉菜单! 当需要多人填写,又保证填写规范的时候,下拉菜单使用起来是非常有必要了!两种办法 ...

最新文章

  1. PyTorch 源码解读之 torch.serialization torch.hub
  2. 华为服务器忘记管理密码怎么修改,忘记云服务器密码怎么修改
  3. 一个男人关心的东西决定他的层次(转)
  4. iphone备忘录突然没了_苹果突然下架12 天猫:双11有惊喜!iPhone12 mini配色缩水
  5. LVS在淘宝环境中的应用
  6. linux 设备 major 253,redhat5.5测试环境中使用udev配置raw设备
  7. 2019年,最值得期待的科学突破将是?
  8. 2021-06-19 sklearn中的线性回归模型
  9. 【codevs1246】丑数,STL与取模大质数的好处
  10. Linq快速入门——扩展方法
  11. 线性回归(单神经元,多神经元)和多层感知机(多个神经元)对比
  12. Java 内存溢出(java.lang.OutOfMemoryError)解决
  13. 图像处理界双线性插值算法的优化
  14. 如何用atom编辑python_对于新手来说 如何用atom搭建python的ide?
  15. PS快捷键大全 打开置入 图层操作的快捷键 新建图层 填充上色 前景色背景色等的快捷键
  16. 一个专门帮助前端搞副业的社群
  17. 提供几本WEB前端开发电子书(2012/10/31更新)
  18. 绚丽的魔兽世界,广袤的艾泽拉斯大陆
  19. 喜大普奔,又一国标正式进入国际标准
  20. html5应用缓存教程视频教程,html5——应用缓存

热门文章

  1. python最低薪资_Python最低薪资在北上深是多少你们知道吗?我已经整理好了哦
  2. java变量设置_配置环境变量
  3. 对于Chua 混沌电路进一步测试
  4. 院士领衔,大咖云集!航天智慧物流单项赛决赛倒计时2天!
  5. 特斯拉线圈的阻抗分析
  6. java list合并_Java流系列之第2部:使用流执行聚合
  7. java管程 实现,Java中的管程模型
  8. 如何让python图案旋转_python实现旋转和水平翻转的方法
  9. python文件编译_我算是白学Python了,现在才知道原来Python是可以编译的
  10. 毕业设计 c语言编译器的设计开发-字节代码格式设计与实现 开题报告,C语言编译器设计与实现...