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_Cooikes不同页面无法传递的解决方法
Mar 07 PHP
php中stream(流)的用法
Mar 25 PHP
PHP定时更新程序设计思路分享
Jun 10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
php文件下载处理方法分析
Apr 22 PHP
php数据访问之查询关键字
May 09 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 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 fread()使用技巧
2010/01/22 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
javascript import css实例代码
2008/07/18 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
python简单文本处理的方法
2015/07/10 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
python opencv读mp4视频的实例
2018/12/07 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
python 常见的反爬虫策略
2020/09/27 Python
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
学习保证书范文
2014/04/30 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
建议书格式
2015/02/04 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
详细总结Python常见的安全问题
2021/05/21 Python