jQuery+PHP+MySQL实现无限级联下拉框效果


Posted in Javascript onFebruary 19, 2016

 本文简单实现jQuery无限级联效果,分享给大家供大家参考,具体内容如下
 效果图:

jQuery+PHP+MySQL实现无限级联下拉框效果

 图1 仅下拉框

jQuery+PHP+MySQL实现无限级联下拉框效果

  图2 层级提示+下拉框

jQuery+PHP+MySQL实现无限级联下拉框效果

图3 存储数据点击响应

主要包含3个文件:index.html(主页),wuxianjilian.php(数据处理),wuxianjilian.sql(MySQL数据文件)
1. index.html

<html>
<head>
 <title>无限级联</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta http-equiv="Content-Language" content="zh-CN" />
 <script type="text/javascript" src="http://files.cnblogs.com/Zjmainstay/jquery-1.6.2.min.js"></script>
</head>
<body>
<div id="jilianContainer"></div>
<script type="text/javascript">
$(document).ready(function(){
 var getData = function(obj){
  $.ajax({
   url:'wuxianjilian.php',
   type:'POST',
   data:{"pid":obj.val()},
   dataType:'json',
   async:false,
   success:function(data){
    if($(".selection").length){
     $(".selection:gt("+$(obj).index()+")").remove(); //移除后面所有子级下拉菜单
     $(".selection:last").after(data);     //添加子级下拉菜单
    }else {
     $("#jilianContainer").append(data);     //初始加载情况
    }
    //所有下拉响应
    $(".selection").unbind().change(function(){
     getData($(this));
    });
   },
   error:function(msg){
    alert('error');
   }
  });
 }
 
 //Init
 getData($(this));
 
});
</script>

<!-- 数据存储示例,仅提取数据,不做操作 -->

<div style="height:100px;display:block;"></div>
<input type="button" value="存储数据" id="save"></input>
<script type="text/javascript">
$(document).ready(function(){
 $("#save").click(function(){
  var data = [];
  $(".selection").each(function(){
   data.push($.trim($(this).val()));
  })
  
  alert(data.join(','));
 });
});
</script>

</body>
</html>

2. wuxianjilian.php

<?php
 header("Content-type: text/html; charset=utf-8"); 

 //数据库连接操作
 $conn = mysql_connect("localhost","Zjmainstay","") or die("Can not connect to database.Fatal error handle by ". __FILE__);
 mysql_select_db("test",$conn);   //数据库名为 test
 mysql_query("SET NAMES utf8",$conn);
 
 //获取父级id
 $pid = (int)$_POST['pid'];
 
 //查询子级
 $sql = "SELECT id,text FROM `wuxianjilian` WHERE pid={$pid}";
 $result = mysql_query($sql,$conn);
 
 //组装子级下拉菜单
 $html = '';
 while($row = mysql_fetch_assoc($result)){
  $html .= '<option value="'.$row['id'].'">'.$row['text'].'</option>';
 }

 if(!empty($html)) $html = '<select class="selection"><option value="">请选择</option>' . $html . '</select>';
 
 //输出下拉菜单
 echo json_encode($html);
//End_php

3. wuxianjilian.sql

wuxianjilian.sql
/*
Navicat MySQL Data Transfer

Source Server   : localhost
Source Server Version : 50516
Source Host   : localhost:3306
Source Database  : test

Target Server Type : MYSQL
Target Server Version : 50516
File Encoding   : 65001

Date: 2012-10-24 20:59:09
*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `wuxianjilian`
-- ----------------------------
DROP TABLE IF EXISTS `wuxianjilian`;
CREATE TABLE `wuxianjilian` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `pid` int(11) DEFAULT NULL,
 `text` varchar(32) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of wuxianjilian
-- ----------------------------
INSERT INTO `wuxianjilian` VALUES ('1', '0', 'A0');
INSERT INTO `wuxianjilian` VALUES ('2', '0', 'B0');
INSERT INTO `wuxianjilian` VALUES ('3', '1', 'C1');
INSERT INTO `wuxianjilian` VALUES ('4', '1', 'D1');
INSERT INTO `wuxianjilian` VALUES ('5', '1', 'E1');
INSERT INTO `wuxianjilian` VALUES ('6', '2', 'F2');
INSERT INTO `wuxianjilian` VALUES ('7', '2', 'G2');
INSERT INTO `wuxianjilian` VALUES ('8', '3', 'H3');
INSERT INTO `wuxianjilian` VALUES ('9', '3', 'I3');
INSERT INTO `wuxianjilian` VALUES ('10', '3', 'J3');
INSERT INTO `wuxianjilian` VALUES ('11', '3', 'K3');
INSERT INTO `wuxianjilian` VALUES ('12', '4', 'L4');
INSERT INTO `wuxianjilian` VALUES ('13', '4', 'M4');
INSERT INTO `wuxianjilian` VALUES ('14', '8', 'N8');
INSERT INTO `wuxianjilian` VALUES ('15', '9', 'N9');
INSERT INTO `wuxianjilian` VALUES ('16', '14', 'O14');
INSERT INTO `wuxianjilian` VALUES ('17', '14', 'P14');
INSERT INTO `wuxianjilian` VALUES ('18', '14', 'Q14');
INSERT INTO `wuxianjilian` VALUES ('19', '17', 'R17');
INSERT INTO `wuxianjilian` VALUES ('20', '17', 'S18');
INSERT INTO `wuxianjilian` VALUES ('21', '20', 'T20');

如果大家还想深入学习,可以点击jquery下拉框效果汇总、JavaScript下拉框效果汇总进行学习。

希望本文所述对大家学习jquery程序设计有所帮助。

Javascript 相关文章推荐
script标签的 charset 属性使用说明
Dec 04 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
Jan 25 Javascript
Jquery中基本选择器用法实例详解
May 18 Javascript
js实现汉字排序的方法
Jul 23 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
Jun 17 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
JS实现仿PS的调色板效果完整实例
Dec 21 Javascript
详解Vue.js入门环境搭建
Mar 17 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
Feb 11 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
Mar 06 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
May 08 Javascript
Vue将页面导出为图片或者PDF
Aug 17 Javascript
js面向对象的写法
Feb 19 #Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
Feb 19 #Javascript
js下将金额数字每三位一逗号分隔
Feb 19 #Javascript
javascript下使用Promise封装FileReader
Feb 19 #Javascript
javascript每日必学之循环
Feb 19 #Javascript
jQuery实现简单的DIV拖动效果
Feb 19 #Javascript
JavaScript深度复制(deep clone)的实现方法
Feb 19 #Javascript
You might like
php下目前为目最全的CURL中文说明
2010/08/01 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
初识php MVC
2014/09/10 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
php递归函数怎么用才有效
2018/02/24 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
海飞丝的广告词
2014/03/20 职场文书
《海底世界》教学反思
2014/04/16 职场文书
投资协议书范本
2014/04/21 职场文书
2014年党课学习材料
2014/05/11 职场文书
公路绿化方案
2014/05/12 职场文书
金融保险专业求职信
2014/09/03 职场文书
心理学培训心得体会
2016/01/22 职场文书
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
在 Python 中利用 Pool 进行多线程
2022/04/24 Python