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 mysql Errcode: 28 终极解决方法
Jul 01 PHP
PHP教程 变量定义
Oct 23 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
解析PHP 使用curl提交json格式数据
Jun 29 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
Jun 14 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
cmd下运行php脚本
2008/11/25 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
详解PHP PDO简单教程
2019/05/28 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python之用户输入的实例
2018/06/22 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
详解python配置虚拟环境
2019/04/08 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
美丽的现代设计家具:2Modern
2018/07/26 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
数学检讨书1000字
2014/02/24 职场文书
《三峡》教学反思
2014/03/01 职场文书
2014年文员工作总结
2014/11/18 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
女性励志书籍推荐
2019/08/19 职场文书