PHP实现页面静态化——局部动态化

上回说到:PHP实现页面静态化——全部纯静态化 

       这次实现PHP的局部动态化,也就是说静态化的页面存在“动态”过程,结合全部静态化技术+Ajax技术实现局部动态化,局部更新页面。

       在上文的数据库基础上,在创建表 hit,如下:


       并插入几条数据,如下:


       案例demo02的目录结构:


       为实现局部静态化,需要结合Ajax技术。当访问主页index.php时,根据静态页面的缓存时效,判断是否生成index.shtml静态页面,当静态页面返回后静态页面中的js发起Ajax请求,获取服务器中的数据,进行动态更新。那么这里就需要一个 服务器文件 接口,响应Ajax请求。

       接口文件 hot.php

<?php 
	//排行榜接口数据
	//1、获取数据 2、把我们获取到的数据组装成接口数据提供通信
	
	require_once('../db.php');
	$connect = Db::getInstance()->connect();
	$sql = "SELECT * FROM hit AS a join news AS b ON a.news_id = b.id ORDER BY a.count DESC LIMIT 3";

	$result = mysql_query($sql, $connect);
	while($row = mysql_fetch_assoc($result)) {
		$res[] = $row;
	}
	//print_r($res);
	show(1, 'success', $res);

	function show($code = 0, $message = 'error', $data = array()) {
		$result = array(
				'code' => $code,
				'message' => $message,
				'data' => $data
			);
		echo json_encode($result);
	}
?>
       联表查询数据库,并已json格式返回。

       模板templates/singwa.php

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>新闻中心</title>
	<link rel="stylesheet" href="public/css/bootstrap.min.css" type="text/css">
	<script src="public/js/jquery-1.7.min.js"></script>
</head>
<body>
	<div class="container">
		<div class="newslist">
			<h3>新闻列表</h3>
			<ul class="list-group">
				<?php foreach ($news as $key => $value) { ?>
				<li class="list-group-item"><a href="#"><?php echo $value['title'];?></a></li>
				<?php } ?>
			</ul>
		</div>
		<div class="hot-rank">
			<h3>今日排行</h3>
			<ul id="hot_html" class="list-group">
				
			</ul>
		</div>
	</div>
	<script src="public/js/hot.js"></script>
</body>
</html>
       hot.js 发送Ajax请求,获取动态数据,动态显示数据。

$.ajax({
	url:'api/hot.php',
	type: 'get',
	dataType: 'json',
	error: function() {
		alert('请求错误');
	},
	success: function(result) {
		if(result.code == 1) {
			var html = '';
			$.each(result.data, function(key, value) {
				//console.log(key + ' ' + value.title);
				html += '<li class="list-group-item"><a href="#">' + value.title + '</a></li>';
			});
			//console.log(html);
			$("#hot_html").html(html);
		} else {
			alert('请求失败');
		}
	}
});

       当第一次访问 index.php (index.php文件不做修改,与上文一致),服务器会根据模板singwa.php生成对应的静态文件index.shtml,将index.shtml文件发回客户端。客户端得到index.shtml文件后,又一次向服务器发送Ajax请求获取动态数据,并进行显示。

       结果如下:

目录结构:


页面显示:




  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值