jQuery+PHP+MySQL二级联动下拉菜单实例讲解
实现效果:当
二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动。本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果。
实现效果:当选择大类时,小类下拉框里的选项内容也随着改变。
实现原理:根据大类的值,通过jQuery把值传给后台PHP处理,PHP通过查询MySQl数据库,得到相应的小类,并返回JSON数据给前端处理。
XHTML
首先我们要建立两个下拉选择框,第一个是大类,第二个是小类。大类的值可以是预先写好,也可以是从数据库读取。
1 2 3 4 5 6 7 8 9 10 11 | <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追加到小类里。
1 2 3 4 5 6 7 8 9 10 | 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数据追加之前一定要先将小类里的原有的项清空。清空选项的方法有两种,一种是上文代码中提到,还有一种更简单直接的方法:
1 | smallname.(); |
然后,在页面载入后执行调用函数:
1 2 3 4 5 6 | $( function (){ getSelectVal(); $( "#bigname" ).change( function (){ getSelectVal(); }); }); |
在页面初始的时候,下拉框是要设置选项的,所以在初始的时候就要调用getSelectVal(),而当大类选项改变时,也调用了getSelectVal()。
PHP
1 2 3 4 5 6 7 8 9 10 | 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表结构:
1 2 3 4 5 6 | 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三者结合如何实现的二级联动下拉菜单,程序还有一些不足之处,需要继续完善,希望本文可以给大家一点启发。