作者:zcr2016 | 来源:互联网 | 2023-01-30 18:58
tag:php,javascript,js,jquery,ajax,json,全国省市区三级联动,三级联动,下拉列表,上海顶讯,刘小溪之前也写过类似的功能,但那时候都是用AJAX把远程返回的一个sel
tag:php,Javascript,js,jquery,ajax,json,全国省市区三级联动,三级联动,下拉列表,上海顶讯,刘小溪
之前也写过类似的功能,但那时候都是用AJAX把远程返回的一个select 下拉列表直接innerHTML在指定的id上面。很明显,这样的话,如果想把下拉列表变成checkbox ,那么就要修改远程请求的php代码,不够灵活。
很久以前就听小溪说,数据传送的时候,应该保持其原样,即数据源不变,我们得到数据源以后,根据我们的要求,再将其格式化成我们想要的样子。所以,这次,我采用JSON 来传送数据,后再将其遍历,生成select 里的 option 。
注意以下几点问题。
1。php传出来的数据JS 怎么接收 ? var temp1 = eval('('+ data +')');
2。中文乱码问题。html中 decodeURI(temp1[i].region_name) php中 urlencode (iconv ('gbk','utf-8',$val['region_name']))
数据调用 的ecshop 的 ecs_region表里的数据。
先看html中我是怎么调用的
代码如下:
-----------------------------------
-----------------------------------
php 代码如下:
---------------------------------
/*
* -------------------------------------------------
* Author : Fanglor
* Email : Fanlor@163.com
* Url : www.skyleft.com
* Date : 2009-11-16
* -------------------------------------------------
*/
include "config.php"; //此处为连接数据库代码,请自己修改。
$act = isset ($_GET['act']) ? $_GET['act'] : '' ;
if ($act == 'getList') {
$pid = isset ($_POST['pid']) ? intval($_POST['pid']) : 0;
$sql = "SELECT * FROM `ecs_region` WHERE `parent_id` = '{$pid}' ORDER BY `region_id` ASC ";
$list = $db->getAll($sql);
foreach ($list as $key => $val ) {
$list[$key]['region_name'] =
urlencode (iconv ('gbk','utf-8',$val['region_name'])); //因为AJAX传输的为UTF-8编码的数据,所以此处一定要转码。urlencode 是为了解决中文乱码的问题。
}
print_r (json_encode ($list));
}
---------------------------------
显示效果如下:
ok ,大功告成。