您的位置:首页 > 编程语言 > PHP开发

thinkphp下的三级联动(带有缓存的)

2016-10-27 23:07 309 查看
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));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp 缓存