pjax 和 ajax 的区别
从官网的这段描述中可看出 pjax 的核心其实还是 ajax,所以如果是 ajax 去做这种局部 html 刷新的话需要写更多的代码,而 pjax 已经做的很好了。 pjax 的使用方法:使用 pjax 一般需要后台配合,比如 java 后端可以写个过滤器过滤当前请求,如果包含 X-PJAX 请求头 (说明是 pjax 请求) 那么只需要返回局部 html 代码,剩下的交给前端 pjax 插件渲染就好,如果不包含则返回完整 html 代码(包含头尾的 html 代码,不包含 X-PJAX 说明是普通请求) 使用 pjax 的好处:由于搜索引擎的蜘蛛不会执行 javascript,所以如果你的页面是 ajax 方式加载将不会被引擎收录,比如: <nav id="tab"> <a href="javascript:void(0);">简介</a> <a href="javascript:void(0);">动态</a> <a href="javascript:void(0);">礼包</a> <a href="javascript:void(0);">开服</a> <a href="javascript:void(0);">攻略</a> </nav> <div id="con"></div> <script> $("#tab a").click(function(){ //发起ajax请求 $.ajax({ url:"./introduction.html",//注意:这里实际情况应该是根据点击的不同a标签加载不同页面 success: function(html){ //将请求回来的内容添加到下面的内容div $("#con").append(html); } }); }); </script>
除了主页会被收录,简介、动态、礼包…这几个页面将不会被收录,因为引擎蜘蛛爬取主页时会顺着 a 标签的 href 爬取另一个页面,而不会执行 javascript。 <nav id="tab"> <a href="./introduction.html">简介</a> <a href="./dynamic.html">动态</a> <a href="./gift.html">礼包</a> <a href="./service.html">开服</a> <a href="./strategy.html">攻略</a> </nav> <div id="con"></div> <script> $("#tab a").click(function(){ //发起ajax请求 $.ajax({ url: "./introduction.html",//注意:这里实际情况应该是根据点击的不同a标签加载不同页面 data: {key: ‘ajax‘}//注意:这是必须的参数标识 success: function(html){ //将请求回来的内容添加到下面的内容div $("#con").html(html); } }); return false; // 阻止 A 链接跳转 }); </script>
后台代码可以这样处理,php 为例: $isAjax = $_GET["key"]; $con = include ‘con.php‘; if($isAjax == "ajax"){ echo $con; }else{ $head = include ‘head.php‘; $foot = include ‘head.php‘; echo $head + $con + $foot; }
如果请求中的参数 key 的值是“ajax” 则只输出部分内容,否则则输出包含头部底部等完整内容。 参考:pjax 中文文档、ajax 如何做到 SEO 友好 转载自:http://meia.fun/article/1540982577311 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |