1.Application\Home\View\Index\index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
省份:
<select name="prov" id="prov">
<option value="0">請選擇省份</option>
<volist name="prov_data" id="vo">
<option value="{$vo.id}">{$vo.name}</option>
</volist>
</select>
城市:
<select name="city" id="city">
<option value="0">請選擇城市</option>
</select>
地區:
<select name="county" id="county">
<option value="0">請選擇地區</option>
</select>
<script type="text/javascript" src="__PUBLIC__/Style/Js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
$(function(){
$('#prov').change(function(){
var pid = $(this).val();
$.post("{:U('Index/getCity')}",{'pid':pid},function(data){
if(data.status){
var html='<option value="0">請選擇城市</option>';
$.each(data.data,function(i,item){
html+="<option value="+item.id+">"+item.name+"</option>";
});
$('#city').html(html);
}else{
alert(data.msg);
}
},'json');
$('#county').html('<option>請選擇地區</option>');
});
$('#city').change(function(){
var pid = $(this).val();
$.post("{:U('Index/getCounty')}",{'pid':pid},function(data){
if(data.status){
var html='<option value="0">請選擇地區</option>';
$.each(data.data,function(i,item){
html+="<option>"+item.name+"</option>";
});
$('#county').html(html);
}else{
alert(data.msg);
}
},'json');
$('#county').html('<option>請選擇地區</option>');
});
});
</script>
</body>
</html>
2.\Application\Home\Controller\IndexController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$value=S('prov_data');
if(!empty($value)){
$prov_data = S('prov_data');
}else{
$prov_data=M("region")->where('pid=1')->select();
S('prov_data',$prov_data);
}
//$prov_data=M("region")->where('pid=1')->select();
$this->assign('prov_data',$prov_data);
$this->display();
}
public function getCity(){
if(IS_POST){
$pid = intval($_POST['pid']);
if(empty($pid))
{
echo json_encode(array('status'=>0, 'msg'=>'對不起網絡繁忙,請稍後重試...'));
exit;
}
$city_data = S('city_data'.$pid);
// 如果緩存爲空,就去數據庫讀取並保存緩存
if(empty($city_data))
{
// 從數據庫獲取對應的PID數據
$city_data = M('region')->where('pid='.$pid)->select();
// 緩存城市數據(因爲有多個城市,所以標識必須“動態”)
S('city_data'.$pid, $city_data);
}
// 判斷是數據是否爲空
if(empty($city_data))
{
echo json_encode(array('status'=>0, 'msg'=>'對不起網絡繁忙,請稍後重試...'));
exit;
}
echo json_encode(array('status'=>1, 'data'=>$city_data));
}
}
public function getCounty(){
if(IS_POST){
$pid = intval($_POST['pid']);
if(empty($pid))
{
echo json_encode(array('status'=>0, 'msg'=>'對不起網絡繁忙,請稍後重試...'));
exit;
}
$county_data = S('county_data'.$pid);
// 如果緩存爲空,就去數據庫讀取並保存緩存
if(empty($county_data))
{
// 從數據庫獲取對應的PID數據
$county_data = M('region')->where('pid='.$pid)->select();
// 緩存地區數據(因爲有多個地區,所以標識必須“動態”)
S('county_data'.$pid, $county_data);
}
// 判斷是數據是否爲空
if(empty($county_data))
{
echo json_encode(array('status'=>0, 'msg'=>'對不起網絡繁忙,請稍後重試...'));
exit;
}
echo json_encode(array('status'=>1, 'data'=>$county_data));
}
}
}