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 相关文章推荐
EXTJS记事本 当CompositeField遇上RowEditor
Jul 31 Javascript
浅谈javascript属性onresize
Apr 20 Javascript
JavaScript 正则表达式中global模式的特性
Feb 25 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
Jun 20 Javascript
老生常谈javascript的类型转换
Oct 12 Javascript
详解Vue2.0里过滤器容易踩到的坑
Jun 01 Javascript
利用node.js如何创建子进程详解
Dec 09 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
Jan 16 Javascript
vscode中eslint插件的配置(prettier配置无效)
Sep 10 Javascript
js实现盒子滚动动画效果
Aug 09 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
Terran热键控制
2020/03/14 星际争霸
PHP4实际应用经验篇(3)
2006/10/09 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
超级强大的表单验证
2006/06/26 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
JavaScript获取页面元素的常用方法详解
2019/09/28 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python的条件语句与运算符优先级详解
2015/10/13 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
Python中的__slots__示例详解
2017/07/06 Python
Python对象的属性访问过程详解
2020/03/05 Python
Python函数生成器原理及使用详解
2020/03/12 Python
在Python中实现字典反转案例
2020/12/05 Python
python制作抽奖程序代码详解
2021/01/15 Python
给领导的致歉信范文
2014/01/13 职场文书
应届毕业生求职信
2014/05/26 职场文书
入党团支部推荐意见
2015/06/02 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python