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 相关文章推荐
数据库相关问题
Oct 09 PHP
Fine Uploader文件上传组件应用介绍
Jan 06 PHP
探讨PHP中this,self,parent的区别详解
Jun 08 PHP
php数组去重复数据示例
Feb 25 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
微信公众平台DEMO(PHP)
May 04 PHP
屏蔽PHP默认设置中的Notice警告的方法
May 20 PHP
PHP判断表达式中括号是否匹配的简单实例
Oct 22 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
PHP实现动态删除XML数据的方法示例
Mar 30 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
JS跨域总结
2012/08/30 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
SVM基本概念及Python实现代码
2017/12/27 Python
flask中使用蓝图将路由分开写在不同文件实例解析
2018/01/19 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
详解Python用户登录接口的方法
2019/04/17 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
高一家长会邀请函
2014/01/12 职场文书
cf战队收人广告词
2014/03/14 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
高中课程设置方案
2014/05/28 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
主持人开幕词
2015/01/29 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL