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 相关文章推荐
简单采集了yahoo的一些数据
Feb 14 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
CI框架附属类用法分析
Dec 26 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
May 02 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
php下Memcached入门实例解析
2015/01/05 PHP
php查看当前Session的ID实例
2015/03/16 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
php简单数据库操作类的封装
2017/06/08 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
Python下singleton模式的实现方法
2014/07/16 Python
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
python对常见数据类型的遍历解析
2019/08/27 Python
Python之字典添加元素的几种方法
2020/09/30 Python
应届毕业生个人自我评价
2013/09/20 职场文书
应届医学毕业生求职信分享
2013/12/02 职场文书
入党积极分子介绍信
2014/01/17 职场文书
小学生安全保证书
2014/02/01 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
关于保护环境的建议书
2014/08/26 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
谢师宴答谢词
2015/01/05 职场文书
辞职信如何写
2015/02/27 职场文书