thinkphp下的三級聯動(帶有緩存的)

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));			
    	}
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章