使用ajax来异步加载数据列表不利于SEO优化,页面局部刷新URL地址不变,虽然说用户体验比全页面刷新好一点,可是爬虫爬取会认为是一个页面,影响收录。这里将介绍使用Pjax加载页面,实现URL跳转网页局部刷新效果。
后台框架服务使用thinkphp5,前台渲染加载使用Pjax。
thinkphp5代码:
文件 controller/home/index.php
/**
* pjax 渲染
* @param [type] $data [description]
* @return [type] [description]
*/
protected function render_pjax($data)
{
$this->assign('data', $data);
if ($this->request->isPjax())
{
$this->view->engine->layout(false);
exit($this->fetch('pjaxlist'));
} else {
return $this->fetch();
}
}
public function index ()
{
$data = []; // 查询数据
return $this->render_pjax($data);
}
javascript:
pjax有多种请求加载渲染方式,点击链接加载比较简单,这里实现这种比较通用的,可以放到js方法中。
$.pjax({
container:'#pjax-container',
url:pjax_url, // pjax 请求地址
timeout:6000, // 超时时间 超时将全页面跳转刷新
push:true,
scrollTo:100px, // 向上滚动
});
HTML:
文件 view/home/pjaxlist.html
<ul> <! -- 循环 --> <li> <!-- 赋值 -- > </li> <! -- 循环 --> </ul>
文件 view/home/index.html
<html>
<head>
<script src="jquery.js"></script>
<script src="jquery.pjax.js"></script>
</head>
<body>
<div id="pjax_container">
<!-- 加载内容 -->
</div>
<a href="javascript:load()">加载内容</a>
<script>
function load()
{
var pjax_url = '/home/index';
$.pjax({
container:'#pjax-container',
url:pjax_url, // pjax 请求地址
timeout:6000, // 超时时间 超时将全页面跳转刷新
push:true,
scrollTo:100px, // 向上滚动
});
}
</script>
</body>
</html>
热门文章