jQuery+PHP+MySQL二级联动下拉菜单实例讲解


Posted in Javascript onOctober 27, 2015

二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动。本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果。
实现效果:当选择大类时,小类下拉框里的选项内容也随着改变。

实现原理:根据大类的值,通过jQuery把值传给后台PHP处理,PHP通过查询MySQl数据库,得到相应的小类,并返回JSON数据给前端处理。
XHTML
首先我们要建立两个下拉选择框,第一个是大类,第二个是小类。大类的值可以是预先写好,也可以是从数据库读取。

<label>大类:</label> 
<select name="bigname" id="bigname"> 
  <option value="1">前端技术</option> 
  <option value="2">程序开发</option> 
  <option value="3">数据库</option> 
</select> 
<label>小类:</label> 
<select name="smallname" id="smallname"> 
<option value="1">flash</option> 
<option value="2">ps</option> 
</select>

jQuery
先写一个函数,获取大类选择框的值,并通过$.getJSON方法传递给后台server.php,读取后台返回的JSON数据,并通过$.each方法遍历JSON数据,将对应的值写入一个option字符串,最后将option追加到小类里。

function getSelectVal(){ 
  $.getJSON("server.php",{bigname:$("#bigname").val()},function(json){ 
    var smallname = $("#smallname"); 
    $("option",smallname).remove(); //清空原有的选项 
    $.each(json,function(index,array){ 
      var option = "<option value='"+array['id']+"'>"+array['title']+"</option>"; 
      smallname.append(option); 
    }); 
  }); 
}

注意,在遍历JSON数据追加之前一定要先将小类里的原有的项清空。清空选项的方法有两种,一种是上文代码中提到,还有一种更简单直接的方法:

smallname.();

然后,在页面载入后执行调用函数:

$(function(){ 
  getSelectVal(); 
  $("#bigname").change(function(){ 
    getSelectVal(); 
  }); 
});

在页面初始的时候,下拉框是要设置选项的,所以在初始的时候就要调用getSelectVal(),而当大类选项改变时,也调用了getSelectVal()。
PHP

include_once("connect.php"); //链接数据库 
 
$bigid = $_GET["bigname"]; 
if(isset($bigid)){ 
  $q=mysql_query("select * from catalog where cid = $bigid"); 
  while($row=mysql_fetch_array($q)){ 
    $select[] = array("id"=>$row[id],"title"=>$row[title]); 
  } 
  echo json_encode($select); 
}

根据jQuery传递过来的大类的value值,构造SQL语句查询分类表,最终输出JSON数据。本站在未做特别说明的情况下所使用的PHP与MySQL连接,和查询语句等均使用原始语句方法如mysql_query等,目的就是为了让读者能够直观的知晓数据的传输查询。
最后附上MYSQL表结构:

CREATE TABLE `catalog` ( 
 `id` mediumint(6) NOT NULL auto_increment, 
 `cid` mediumint(6) NOT NULL default '0', 
 `title` varchar(50) NOT NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

以上就是介绍了jQuery+PHP+MySQL三者结合如何实现的二级联动下拉菜单,程序还有一些不足之处,需要继续完善,希望本文可以给大家一点启发。

Javascript 相关文章推荐
对象的类型:本地对象(1)
Dec 29 Javascript
JavaScript 变量命名规则
Sep 23 Javascript
js绑定事件this指向发生改变的问题解决方法
Apr 23 Javascript
jquery、js操作checkbox全选反选
Mar 12 Javascript
JavaScript中匿名函数的用法及优缺点详解
Jun 01 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
Jun 22 Javascript
Three.js学习之几何形状
Aug 01 Javascript
Vue.js系列之项目搭建(1)
Jan 03 Javascript
JavaScript自定义文本框光标
Mar 05 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
Feb 21 Javascript
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 Javascript
jQuery结合CSS制作动态的下拉菜单
Oct 27 #Javascript
jquery实现的V字形显示效果代码
Oct 27 #Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 #Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
Oct 27 #Javascript
JS实现浏览器状态栏文字闪烁效果的方法
Oct 27 #Javascript
JS实现浏览器状态栏显示时间的方法
Oct 27 #Javascript
JavaScript模块规范之AMD规范和CMD规范
Oct 27 #Javascript
You might like
PHP中使用BigMap实例
2015/03/30 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
Dom操作之兼容技巧分享
2011/09/20 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
vue中使用rem布局代码详解
2019/10/30 Javascript
JS检测浏览器开发者工具是否打开的方法详解
2020/10/02 Javascript
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
python实现K最近邻算法
2018/01/29 Python
python 批量修改/替换数据的实例
2018/07/25 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
python可迭代对象去重实例
2020/05/15 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
自荐信包含哪些内容
2013/10/30 职场文书
教师教学评估方案
2014/05/09 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
施工质量承诺书范文
2014/05/30 职场文书
2015年小学开学寄语
2015/02/27 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
机械原理课程设计心得体会
2016/01/15 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python
java解析XML详解
2021/07/09 Java/Android
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL