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 相关文章推荐
js字符编码函数区别分析
Dec 28 Javascript
node.js中的fs.chown方法使用说明
Dec 16 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
jQuery中end()方法用法实例
Jan 08 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
Jul 01 Javascript
最实用的jQuery分页插件
Oct 09 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
Mar 10 Javascript
如何制作一个Node命令行图像识别工具
Dec 12 Javascript
Layui tree 下拉菜单树的实例代码
Sep 21 Javascript
js实现淘宝首页的banner栏效果
Nov 26 Javascript
vue渲染方式render和template的区别
Jun 05 Javascript
Javascript柯里化实现原理及作用解析
Oct 22 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 explode()函数用法、切分字符串
2012/10/03 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
Javascript Math对象
2009/08/13 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
django使用html模板减少代码代码解析
2017/12/12 Python
python用插值法绘制平滑曲线
2021/02/19 Python
python openpyxl使用方法详解
2019/07/18 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
numba提升python运行速度的实例方法
2021/01/25 Python
老师给学生的表扬信
2014/01/17 职场文书
出国留学经济担保书
2014/04/01 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
员工自我评价范文
2015/03/11 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL