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生成静态页面分析 模板+缓存+写文件
Aug 17 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
如何使用php输出时间格式
Aug 31 PHP
cakephp打印sql语句的方法
Feb 13 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
php表单提交实例讲解
Nov 12 PHP
PHP常见漏洞攻击分析
Feb 21 PHP
PHP常用技巧汇总
Mar 04 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
Yii框架日志操作图文与实例详解
Sep 09 PHP
laravel框架数据库配置及操作数据库示例
Oct 10 PHP
PHP 8新特性简介
Aug 18 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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
JS与C#编码解码
2013/12/03 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
python文件和目录操作方法大全(含实例)
2014/03/12 Python
Python设计模式之观察者模式实例
2014/04/26 Python
Python守护线程用法实例
2017/06/23 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
NumPy中的维度Axis详解
2019/11/26 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
2014年应届大学生自我评价
2014/01/09 职场文书
公积金转移接收函
2014/01/11 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
作风转变心得体会
2014/09/02 职场文书
优秀教师申报材料
2014/12/16 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python