ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单


Posted in PHP onMay 15, 2014

首先是数据库的设计。分类表叫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方法的。

PHP 相关文章推荐
用PHP制作静态网站的模板框架(四)
Oct 09 PHP
用PHP实现小型站点广告管理
Oct 09 PHP
php中随机显示图片的函数代码
Jun 23 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
CodeIgniter安全相关设置汇总
Jul 03 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
php利用gd库为图片添加水印
Nov 09 PHP
浅谈PHP各环境下的伪静态配置
Mar 13 PHP
Laravel5.1 框架路由基础详解
Jan 04 PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 PHP
详解Laravel服务容器的优势
May 29 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 #PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 #PHP
php自定义函数截取汉字长度
May 15 #PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 #PHP
php小技巧之过滤ascii控制字符
May 14 #PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 #PHP
PHP中copy on write写时复制机制介绍
May 13 #PHP
You might like
关于js和php对url编码的处理方法
2014/03/04 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
跟老齐学Python之永远强大的函数
2014/09/14 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Python with标签使用方法解析
2020/01/17 Python
python3 使用traceback定位异常实例
2020/03/09 Python
如何理解python对象
2020/06/21 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
python Cartopy的基础使用详解
2020/11/01 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
为什么需要版本控制?
2013/08/08 面试题
网吧最新创业计划书范文
2014/03/27 职场文书
三年级学生评语
2014/04/23 职场文书
标准毕业生自荐信
2014/06/24 职场文书
学校志愿者活动总结
2014/06/27 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书