jQuery结合PHP+MySQL实现二级联动下拉列表[实例]


Posted in Javascript onNovember 15, 2011

jQuery结合PHP+MySQL实现二级联动下拉列表[实例]

实现原理:根据省份值的变动,通过jQuery把sf_id传给后台php文件处理,php通过查询MySQl数据库,得到对应的地市名,并返回JSON数据给前端处理,即实现联动效果!

为便于讲解,这里直接给出省份:河南省(sf_id=1)  浙江省(sf_id=2),而地市和学生信息则分别建立两张数据表!编码方式均为:utf8!新建数据库并执行以下SQL语句!

/* 地市表 */ 
create TABLE IF NOT EXISTS `dishi`( 
`ds_id` int(3) auto_increment not null primary key, 
`sf_id` int(3) not null default '0', 
`ds_name` varchar(50) not null 
); 
/* 学生表 */ 
create TABLE IF NOT EXISTS `xuesheng`( 
`xs_id` int(3) auto_increment not null primary key, 
`ds_id` int(3) not null default '0', 
`xs_name` varchar(50) not null 
);接着搭个前台架子:

<table border="0" width="100%"> 
<tr> 
<td width=100>省份</td> 
<td> 
<select name="sf_id" id="sf_id" title="选择省份"> 
<option value="1">河南省</option> 
<option value="2">浙江省</option> 
</select> 
</td> 
</tr> 
<tr> 
<td>地市</td> 
<td> 
<select name="ds_id" id="ds_id" title="选择地市"> </select> 
</td> 
</tr> 
<tr> 
<td>学生姓名</td> 
<td><input type=text maxlength=20 name="xs_name" value=""></td></tr> 
</table>

接着就是jQuery部分,详解可看代码后注释部分:
<script language="JavaScript"> 
function getVal(){ 
$.getJSON("select.php",{sf_id:$("#sf_id").val()},function(json){ 
var ds_id = $("#ds_id"); 
$("option",ds_id).remove(); //清空原有的选项,也可使用 ds_id.empty(); 
$.each(json,function(index,array){ 
var option = "<option value='"+array['ds_id']+"'>"+array['ds_name']+"</option>"; 
ds_id.append(option); 
}); 
}); 
} 
//下面是页面加载时自动执行一次getVal()函数 
$().ready(function(){ 
getVal(); 
$("#sf_id").change(function(){//省份部分有变动时,执行getVal()函数 
getVal(); 
}); 
}); 
</script>

其中的select.php就是关键部分了,此文件接收前台通过$.getJSON方法传递过来的参数 sf_id,然后select.php根据省份sf_id获取对应的地市数据,再返回JSON数据,前台通过jQuery将JSON数据进行处理,写入<option>,即完成了联动效果!
$sf_id = $_GET["sf_id"]; 
if(isset($sf_id)){ 
$q=mysql_query("select * from dishi where sf_id = $sf_id"); 
while($row=mysql_fetch_array($q)){ 
$select[] = array("ds_id"=>$row['ds_id'],"ds_name"=>urlencode($row['ds_name'])); 
} 
echo urldecode(json_encode($select)); 
}

其中的urlencode()、urldecode()函数为防止中文数据库内容乱码!这里还需要注意的是,select.php不得再有其它数据返回,免得JSON返回错误!

最后补充一下,有童鞋问这效果在添加学生信息的时候能方便使用,如果有传递过来的学生信息需要编辑时,不能直接显示要编辑的学生所处的地市!这里就需要加个判断了:

首先将上面的:<select name="ds_id" id="ds_id" title="选择地市"> </select>部分做个判断

<select name="ds_id" id="ds_id" title="选择地市"> 
<?php if( isset($_GET['ds_id']) ){//返回要编辑的学生所属的地市 
$sql="SELECT * FROM dishi WHERE ds_id=".$ds_id; 
$resultds=mysql_query($sql,$conn); 
while($listds=mysql_fetch_array($resultds)){ ?> 
<option value="<?php echo $listds['ds_id'] ?>" <?php if( $listds['ds_id']==$ds_id ){ echo 'selected="selected"'; } ?> name="ds_id"><?php echo $listds['ds_name'] ?></option> 
<?php } ?> 
<?php } ?> 
</select>

然后在页面加载时,首次执行getVal()函数前做判断,说明看注释部分:
$().ready(function(){ 
//当$ds_id不为空,表示加载修改状态的表单,此时就不能在页面加载时立即调用getVal()函数,以避免无法显示要修改的账目所在的收支分类 
<?php if( empty($ds_id) ){ ?>//当$ds_id为空,表示加载添加表单,此时要在页面加载时立即调用getVal()函数,以显示当前收支类型的子分类 
getVal(); 
<?php } ?> 
$("#sf_id").change(function(){ 
getVal(); 
}); 
});

好了,差不多结束吧!
Javascript 相关文章推荐
Jquery中对数组的操作代码
Aug 12 Javascript
基于JQuery的Select选择框的华丽变身
Aug 23 Javascript
document.all的一个比较完整的总结及案例
Jan 31 Javascript
JS随机生成不重复数据的实例方法
Jul 17 Javascript
onmouseover和onmouseout的一些问题思考
Aug 14 Javascript
JavaScript数据结构和算法之图和图算法
Feb 11 Javascript
JavaScript从数组中删除指定值元素的方法
Mar 18 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
Dec 06 Javascript
Bootstrap路径导航与分页学习使用
Feb 08 Javascript
node上的redis调用优化示例详解
Oct 30 Javascript
JavaScript显式数据类型转换详解
Mar 18 Javascript
读JavaScript DOM编程艺术笔记
Nov 15 #Javascript
js constructor的实际作用分析
Nov 15 #Javascript
浅谈Javascript面向对象编程
Nov 15 #Javascript
js Html结构转字符串形式显示代码
Nov 15 #Javascript
Js 时间间隔计算的函数(间隔天数)
Nov 15 #Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
Nov 14 #Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
Nov 14 #Javascript
You might like
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
js 覆盖和重载 函数
2009/09/25 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
浅析Python中的join()方法的使用
2015/05/19 Python
Python从MP3文件获取id3的方法
2015/06/15 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
Python 调用Java实例详解
2017/06/02 Python
Python模拟用户登录验证
2017/09/11 Python
python如何实现反向迭代
2018/03/20 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
日本小田急百货官网:Odakyu
2018/07/19 全球购物
Python里面如何拷贝一个对象
2014/02/17 面试题
小学生自我评价范文
2014/01/25 职场文书
网吧消防安全制度
2014/01/28 职场文书
会计学自我鉴定
2014/02/06 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
骨干教师个人总结
2015/02/11 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
护理培训心得体会
2016/01/22 职场文书