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 相关文章推荐
Javascript面向对象编程(二) 构造函数的继承
Aug 28 Javascript
让图片旋转任意角度及JQuery插件使用介绍
Mar 20 Javascript
Highcharts学习之数据列
Aug 03 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
Sep 09 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
Nov 24 Javascript
Vue.JS入门教程之处理表单
Dec 01 Javascript
jQuery实现搜索页面关键字的功能
Feb 16 Javascript
js 输入框 正则表达式(菜鸟必看教程)
Feb 19 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
Jul 26 Javascript
微信小程序获取当前位置和城市名
Nov 13 Javascript
24行JavaScript代码实现Redux的方法实例
Nov 17 Javascript
封装Vue Element的table表格组件的示例详解
Aug 19 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实现的MySQL数据浏览器
2007/03/11 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
stripos函数知识点实例分享
2019/02/11 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
vue 实现图片懒加载功能
2020/12/31 Vue.js
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
Python找出最小的K个数实例代码
2018/01/04 Python
Python交互式图形编程的实现
2019/07/25 Python
opencv实现简单人脸识别
2021/02/19 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
教师演讲稿开场白
2014/08/25 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
家装电话营销开场白
2015/05/29 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python