实现原理:根据省份值的变动,通过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 );接着搭个前台架子:
接着就是jQuery部分,详解可看代码后注释部分:
其中的select.php就是关键部分了,此文件接收前台通过$.getJSON方法传递过来的参数 sf_id,然后select.php根据省份sf_id获取对应的地市数据,再返回JSON数据,前台通过jQuery将JSON数据进行处理,写入
,即完成了联动效果!
$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返回错误! 最后补充一下,有童鞋问这效果在添加学生信息的时候能方便使用,如果有传递过来的学生信息需要编辑时,不能直接显示要编辑的学生所处的地市!这里就需要加个判断了: 首先将上面的: 部分做个判断
$sql="SELECT * FROM dishi WHERE ds_id=".$ds_id; $resultds=mysql_query($sql,$conn); while($listds=mysql_fetch_array($resultds)){ ?> name="ds_id">
然后在页面加载时,首次执行getVal()函数前做判断,说明看注释部分:
$().ready(function(){ //当$ds_id不为空,表示加载修改状态的表单,此时就不能在页面加载时立即调用getVal()函数,以避免无法显示要修改的账目所在的收支分类 //当$ds_id为空,表示加载添加表单,此时要在页面加载时立即调用getVal()函数,以显示当前收支类型的子分类 getVal(); $("#sf_id").change(function(){ getVal(); }); });
好了,差不多结束吧!
Stellungnahme: Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn