php pjax数据返回,如何将Pjax整合进网站,实现全站无刷新加载?

news/2024/5/19 1:34:05/文章来源:https://blog.csdn.net/weixin_42117340/article/details/116285368

摘要:

pjax 是 HTML5 pushState 以及 Ajax 两项技术的简称,综合这两个技术可以实现在不刷新页面的情况下载入HTML网页,带给你超快速的浏览器体验,而且有固定链接、标题以及后退按钮都是有效的。

pjax工作原理

用大白话来说,就是ajax的升级版--可以动态记录历史记录的ajax技术。我们之前用ajax来做无刷新分页,一个最大的不足之处就是无法通过uri来标识这个资源以及历史记录倒退问题,通过利用html5 pushState的api,我们可以轻松达到发送ajax请求的同时,动态的记录状态,这就是pjax!

准备工作

pjax是嘛玩意我们懂了之后,就要开始用它了!但是我们要写一套复杂的js去pushState么?答案是不需要的,已经有人封装好了JqueryPjax插件,我们只需用人家写好的插件即可。

由于这款插件依赖于jquery,又依赖jq去操作pushState,所以必须下载1.7版本以上的JQ哦!

开始使用$(document).pjax('a', '#pjax-container');

$(document).on("pjax:timeout", function(event) {

// 阻止超时导致链接跳转事件发生

event.preventDefault();

});

本页面所有a链接默认用pjax请求数据,请求的数据放入id为pjax-container中。ps:如果前台模板有模板继承,直接写入父类即可。

后台程序、这里用php程序示范:

首先判断是pjax请求还是正常的请求,可以封装成一个方法(方法很多~我只做个示范):protected function is_pjax(){

$input = $_POST;

if(isset($input['_pjax']) && !empty($input['_pjax'])){

return true;//是pjax请求

}else{

return false;//不是pjax请求

}

}

然后控制器根据是否pjax返回不同的数据:if($this->is_pjax()){

return view('index_pjax');//返回pjax的模板

}

return view('index');//返回正常的模板

这里用laravel的方法展示了下,TP中是$this->display()这里不再赘述。

好了,此时大功告成!

解决问题

问题:原先容器绑定的事件被新容器替换掉了,新容器的div没有绑定事件,所以JQ等绑定的事件无效。如多说评论框无法正常使用。

解决:用pjax的加载完成后的回调函数再次绑定即可!

$(document).on('pjax:complete', function() {

pajx_loadDuodsuo();//pjax加载完成之后调用重载多说函数

});

function pajx_loadDuodsuo(){

var dus=$(".ds-thread");

if($(dus).length==1){

var el = document.createElement('div');

el.setAttribute('data-thread-key',$(dus).attr("data-thread-key"));//必选参数

el.setAttribute('data-url',$(dus).attr("data-url"));

DUOSHUO.EmbedThread(el);

$(dus).html(el);

}

}

进一步优化

过渡动画效果:

pjax.js提供了两个api:

$(document).on('pjax:send', function() {

$(".loading").css("display", "block");//pjax链接点击后显示加载动画;

});

$(document).on('pjax:complete', function() {

$(".loading").css("display", "none");//pjax链接加载完成后隐藏加载动画;

});

pjax与百度编辑器代码高亮

使用pjax后,百度编辑器的代码高亮是没效果的,在回调中使用SyntaxHighlighter.all()是没任何效果的,我们只需在回调函数里调用下SyntaxHighlighter.highlight()即可!

6d27afabe8be213ce623efb1c485f47a.gif

感谢您的支持,我会继续努力的!

6d27afabe8be213ce623efb1c485f47a.gif

扫码打赏,你说多少就多少

6d27afabe8be213ce623efb1c485f47a.gif

6d27afabe8be213ce623efb1c485f47a.gif

打开支付宝扫一扫,即可进行扫码打赏哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_709752.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建站利器 | 阿里巴巴上线静态开源站点搭建工具 Docsite

2019独角兽企业重金招聘Python工程师标准>>> 近日,阿里巴巴在Github上线了静态开源站点搭建工具Docsite,这是一款集官网、文档、博客和社区为一体的静态开源站点的解决方案,具有简单易上手、上手不撒手的特质,同时支持…

阿里云服务器ECS挑选什么样的网站环境

2019独角兽企业重金招聘Python工程师标准>>> 我一直使用阿里云云服务器ECS作为搭建网站的服务器,然后用写一个高效的WordPress主题搭建自己的网站,网站环境自然就是LAMP或者LNMP了。 我使用的LAMP/LNMP 作为HTTP SERVER运维,自然非…

Serverless 实战 —— 基于 Serverless 的 VuePress 极简静态网站

基于 Serverless 的 VuePress 极简静态网站 作者: Aceyclee 之前用过 Docsify Serverless Framework 快速创建个人博客系统,虽然 docsify 也是基于 Vue,然而它是完全的运行时驱动,因此对 SEO 不够友好。所以这次尝试使用 VuePress 来搭建一…

Serverless 实战 —— Serverless 架构揭秘与静态网站部署实战

Serverless 架构揭秘与静态网站部署实战 讲师简介 陈涛 Serverless Framework 社区专家 参与 Serverless 社区及开源的相关研发工作。拥有丰富前端、JavaScript 技术经验,以及网站及小程序等项目开发经验,腾讯云 Serverless 系列课程特约讲师。 课程简…

最热开源静态网站生成器 TOP 20

最热开源静态网站生成器 TOP 20 1、静态站点生成器 Jekyll Jekyll 是一个简单的免费的Blog生成工具,类似WordPress。但是和WordPress又有很大的不同,原因是jekyll只是一个生成静态网页的工具,不需要数据库支持。但是可以配合第三方服务,例如d…

演练 网站的导航栏 0920

演练 网站的导航栏 0920 素材 https://cloud.189.cn/t/qMVJzaAbea63 数据 导航图的宽度 760 150 菜单图的宽高 760 32 制作过程 完成基本架构 制作菜单按钮 使用li>a的方式 效果 去掉样式 让li浮动 让a变为块级元素 去掉链接下划线 水平垂直居中 鼠标经过后效果

【资源】可下载三维模型的网站

可以用于生成仿真数据的三维模型库,持续更新… 1.Free3D 2.Turbosquid 3.三维扫描模型 4.3D SKY 5.3D warehouse 6.ArchiBase 7.机械模型 Dassault Systmes ref: https://www.zhihu.com/question/268392246/answer/426906438 https://zhuanlan.zhihu.com…

10个轻量级CMS网站内容管理系统

这里推荐的10个简单轻量级的网站内容管理系统对于每一个Web设计师和Web开发人员来说,都是简单易用的,是一般小型网站的可选实现方案,10 个CMS系统各有特色。 Wolf CMS Wolf CMS simplifies content management by offering an elegant user …

16个SNS网站常用JS组件

1. Facebook jQuery聊天框。 Facebook本身有 一个不错的IM软件,这个组件教你怎么模仿faceback的样式实现一个在线聊天框。 Demo Download 2. 仿Twitter Ajax搜索 帮你建立以个仿Twitter风格的搜索引擎效果。 Demo Download 3. 仿Facebook Mootools模态…

100种增加网站流量的方法

本文是一篇翻译的文章,文章比较长,但是如果你有网站或者blog的话,很多方法还是很值得借鉴的。 流量 就是网络中的货币。网站流量越大,就越容易达到既定目标:赚钱,传播观点,与其他人联系互动&…

网站开发技巧参考大全 event js

事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey 事件返回值 event.returnValue 鼠标位置 event.x event.…

网站开发技巧参考大全 event js

事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey 事件返回值 event.returnValue 鼠标位置 event.x event.…

一步步构建大型网站架构

有幸接确到了架构这个词的玩意,这几天有时间就网上游离一下相关资料,看到不错就收藏一下,作为以后学习的方向: 之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑 、Flickr的架构 、YouTube的架构…

网站静态化结构

写在前头 静态化是解决减轻网站压力,提高网站访问速度的常用方案,但在强调交互的We2.0 时代,对静态化提出了更高的要求,静态不仅要能静,还要能动,下面我通过一个项目,谈谈网站静态化后的架构设计方案,同时和大家探讨一下,在开源产品大行其道,言架构必称MemberCache, Nginx,的时…

网站静态化结构

写在前头 静态化是解决减轻网站压力,提高网站访问速度的常用方案,但在强调交互的We2.0 时代,对静态化提出了更高的要求,静态不仅要能静,还要能动,下面我通过一个项目,谈谈网站静态化后的架构设计方案,同时和大家探讨一下,在开源产品大行其道,言架构必称MemberCache, Nginx,的时…

10种JavaScript特效实例让你的网站更吸引人

10种JavaScript特效实例让你的网站更吸引人 今天的话题是如何改进自己网站的界面或提高网站的视觉体验,从而让用户记忆犹新。我们有三种主要的方法(从难到易):自己动手写脚本;使用类似于jQuery和mooTools的JavaScript框架&#xf…

优化Meta讨好搜索引擎 更好的提升网站排名

网页代码中的Meta标签在SEO(搜索赢取优化)中有着举足轻重的地位,如果在Meta标签上进行了适合搜索引擎的撰写方式,可在很大程度地提升网站的排名,同时也有利于站点内容的收录,所以给每个网页加上Meta值就成为…

优化Meta讨好搜索引擎 更好的提升网站排名

网页代码中的Meta标签在SEO(搜索赢取优化)中有着举足轻重的地位,如果在Meta标签上进行了适合搜索引擎的撰写方式,可在很大程度地提升网站的排名,同时也有利于站点内容的收录,所以给每个网页加上Meta值就成为…