php pjax案例,jQuery pjax简单示例汇总

article/2025/8/27 4:54:43

pjax 是一个jQuery插件,它使用 ajax 和 pushState 来实现快速的浏览体验,包括真正的固定链接,页面标题和工作返回按钮。本文主要和大家分享jQuery pjax简单示例汇总,希望能帮助到大家。

ajax缺点是破坏了浏览器的前进后退,因为ajax的请求不会留在历史记录中。pjax就不一样了,pjax被解释成ajax+pushState的封装,因为它把ajax的请求写入历史记录,并反映在地址栏,这样用户就能愉快地使用前进后退了。pjax有好几个实现方法,这里使用最常用的jQuery库,使用jquery.pjax.js。演示代码的服务器端使用PHP脚本语言。

Pjax用在那儿?就说百度云盘吧,这个大家肯定都用过。百度云盘PC端,在点击打开某个文件夹后会打开这个文件夹下的文件,其实显示文件的这个p就用到了pjax技术。地址栏变换,内容更换,但是却是一个ajax请求。等到后退的时候,不必重新请求上一层文件夹的内容,因为是存在在历史记录中的。而且,开发者还可以选择时候使用cache和storage缓存。

示例一、

pjax

My Site

Go to 第一页.第二页

$(document).pjax('a', '#container')

res1.php

echo "

第一页

";

res2.php

echo "

第二页

";

解释:

$(document).pjax('a', '#Container') 其中 a 是触发元素, #container 是装载 pjax 返回内容的容器,下面也是这样。

示例二、

pjax

My Site

$(function(){

$('#clickMe').click(function(){

$.pjax({

url: './res3.php',

container: '#container'

});

});

});

服务器端代码:

res3.php:

echo "

第三页

";

三综合应用

window.history.pushState(state, title, url);

// https://developer.mozilla.org/zh-CN/docs/Web/API/History/pushState

// @状态对象: 记录历史记录点的额外对象,可以为空.

// @页面标题: 目前所有浏览器都不支持.

// @可选的URL: 浏览器不会检查URL是否存在,只改变URL.URL必须同域,不能跨域.

PJAX其实就是HTML5 window.history.pushState(state, title, url)这个新的API加上传统的AJAX技术,一般用来实现无刷新的页面加载.pushState的作用主要是:改变URL和添加返回历史.这样AJAX无刷新加载页面后,用户还可以正常进行后退和前进,JS的window.history.back()和window.history.forward()也能正常工作.下面就是一个用pushState + jQuery AJAX实现的无刷新的页面加载,不支持的浏览器则自动退化成打开原始的链接打开形式.

index.php:

Index

data.php

$(document).ready(function() {

$('#main').on('click','a',function(e) {

if(window.history.pushState) {

e.preventDefault(); //不跟随原链接跳转

url = $(this).attr('href');

$.ajax({

async: true,

type: 'GET',

url: 'data.php',

data: 'pjax=1',

success: function(data) {

window.history.pushState(null, null, url); //改变URL和添加返回历史

document.title = data.title; //设置标题

$('#main').html(data.main); //设置内容

}

});

} else {

return; //低版本IE8等不支持HTML5 pushState,直接返回进行链接跳转

}

});

});

data.php:

if(isset($_GET['pjax'])) {

//PJAX请求返回JSON

$arr['title'] = 'Data';

$arr['main'] = '

Data Content

';

//下面这两句是把PHP数组转成JSON对象返回

header('Content-Type: application/json; charset=utf-8');

echo json_encode($arr);

} else {

//常规请求返回HTML

?>

Data

Data Content

注意,JS统计代码应该放到main块里面才能正常统计页面访问数.

示例二:

  • >全部
  • >$vo['id']))}">{$vo.name}

$(function(){

$(document).pjax('.pjax a', '#pjax-container',{

type:'post',

scrollTo:false,

});

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

enable_loading = false;

})

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

var str = "

加载中...

";

$('#pjax-container').html(str);

})

//最后一个右侧加边框

$(".brand-news-nav ul li").last().children('a').addClass('last');

$(".brand-news-nav ul li").click(function(){

$(this).addClass('selected').siblings().removeClass('selected');

})

})

loading270x160.gif

法律支持

})

服务端代码

if(is_pjax()){

$this->display('article_pjax');

}else{

$this->display('article');

}

//判断是否是pjax请求

function is_pjax(){

return array_key_exists('HTTP_X_PJAX', $_SERVER) && $_SERVER['HTTP_X_PJAX'];

}

其中的主要思想就是当.pjax a进行点击的时候,将#pjax-container的内容替换为请求后的内容。在后端处理时需要判断是否是pjax请求,如果是需要进行局部渲染,如果不是进行全部渲染。

因为pjax用到了HTML5技术,如果浏览器不支持Html5那么网站会正常进行跳转式的加载,如果支持那么只是进行局部渲染(但是浏览器地址栏中的url会正常跟着a链接进行变动)。

注意上述的js代码中在配置pjax时有个参数scrollTo:false,加上此参数表示点击连接后网页的scrollBar不会变动,如没有此参数,每次点击时浏览视窗会自动跳转到网页顶部

小结:Pjax实际就是从服务器端返回一段代码片段,而不用刷新页面,并且同时对 url 地址进行修改,这样可以节省资源加载,提升页面加载速度。

相关推荐:


http://chatgpt.dhexx.cn/article/mFNsJiFV.shtml

相关文章

pjax php,php整合pjax(pushstate+ajax)实现无刷新页面

PJAX效果 通过url可以跟踪ajax的动态加载内容。这种技术尤其在two step view布局的视图中有很大的好处。无刷新加载页面,意味着响应速度和用户体验得到了极大的提升,在静态脚本和通用模块比较多的情况下,最大程度上节省了重用部分的开销。应用…

html5 pjax,pjax——页面无刷新跳转

pjax虽然不是什么新的技术,然而本人是最近才发现这个比较牛叉的技术。下面是对pjax的介绍: pjax是在HTML5里面引用的新技术,是对ajax pushState的封装,是实现无刷新ajax加载并解决浏览器前进和后退问题的一个开源实现。同时支持了…

java pjax_(转)PJAX的实现与应用

一、前言 web发展经历了一个漫长的周期,最开始很多人认为Javascript这们语言是前端开发的累赘,是个鸡肋,那个时候人们还享受着从一个a链接蹦到另一个页面的web神奇魔术。后来随着JavaScript的不断更新换代,他的功能不仅仅是为网页…

html5 pjax,关于PJAX局部刷新

前言部分 本教程最先来自鬼少博客,后论坛有人补充搜索和评论,然后又被各种转载,转完甚至还有阉割现象,导致会出现各种问题,于是,我这里再重发一次。虽然注释很清楚,但是,还有很多人看不懂&#…

java pjax_pjax简单实例

ajax缺点是破坏了浏览器的前进后退,因为ajax的请求不会留在历史记录中。pjax就不一样了,pjax被解释成ajaxpushState的封装,因为它把ajax的请求写入历史记录,并反映在地址栏,这样用户就能愉快地使用前进后退了。pjax有好…

Typecho开启全站Pjax

原文地址:Typecho开启全站Pjax 前言 因为上次更新后加入民音乐插件,但是有个问题就是在页面跳转的时候由于页面已经刷新了,所以音乐就不会继续播放了,就想着去引入Pjax来解决这个问题,同时引入pjax后比较直观的改变就…

pjax使用小结

前言 上周看到一篇文章在分析简书 我的主页 页面 3 个 tab 页切换的 bug,起先以为是寻常的样式 bug 而已没怎么在意,后来在文章中看到 pjax 这个术语,长得和 ajax 有点像,遂去了解了下。 简介 虽然传统的 ajax 方式可以异步无刷新…

网站访问速度优化之pjax

pjax 是 ajax 和 pushState 的结合,它是一个 jQuery 插件。它通过 ajax 从服务器端获取 HTML 文件,在页面中用获取到的HTML替换指定容器元素中的内容。然后使用 pushState 技术更新浏览器地址栏中的当前地址,并且保持了真实的地址、网页标题&…

idea热更新

配置idea热更新 第一步:下载插件 JRebel idea-file-settings-plugins搜JRebel 点击installed下载 我这里已经下载好。 第二步:配置GUID 点击jrebel Activation,开始配置 第一行是服务器地址:https://jrebel.qekang.com/{GUID} G…

webpack和vue热更新

目录 webpack一些概念介绍 webpack热更新流程 1. 启动阶段 ①->②->A->B 2. 更新阶段 ①->②->③->④ vue的组件热更新模块 总结 提到热更新,首先我们要有一个概念:Vue有热更新模块,而webpack也有它的HRM模块&#x…

JAVA实现代码热更新

JAVA实现代码热更新 引言类加载器实现热更新思路多种多样的加载来源SPI服务发现机制 完整代码类加载器共享空间机制Tomcat如何实现JSP的热更新Spring反向访问用户程序类问题补充细节推荐资源 引言 本文将带领大家利用Java的类加载器加SPI服务发现机制实现一个简易的代码热更新…

cordova打包app热更新问题

定义: 基于 cordova 框架能将web应用 (js, html, css, 图片等) 打包成 App。当 App 在终端上安装后,不需要重新下载app,实现内壳更新。 原理:1.在项目根目录的config.xml文件中添加指向服务器的地址 2.在www目录中添加chcp.json配…

【热更新】游戏热更新方案

游戏热更新方案 热更新演化热更新方案【1】 进程切换1.1 利用fork、exec切换1.2 利用网关切换1.3 微服务- 进程切换注意要点 【2】 动态库替换【3】 脚本语言热更新热更新探究最简单的实现热更的方法最简单的实现热更的方法的局限性热更新全局替换模块方法的局限性 工程实现1. …

Addressable热更新

文章目录 前提配置代码实现 前提配置 (1)勾选AddressableAssetSettings设置的Disable Catalog Update On Startup选项 (2)相应的热更戏资源分组配置(注:此文采用的是动态资源更新) Can Change …

Nacos配置热更新的4种方式、读取项目配置文件的多种方式,@value,@RefreshScope,@NacosConfigurationProperties

nacos实现配置文件的热更新,服务不用重启即可读取到nacos配置中心修改发布后的最新值,spring,springboot项目读取本地配置文件的各种方式;文章中介绍了一下注解的使用:NacosConfigurationProperties,NacosP…

Unity 热更新技术 | (一) 热更新的基本概念原理及主流热更新方案介绍

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 &…

JAVA热更新

引言 知识储备先看这篇文章:JAVA Instrument 在这个案例中我们会利用Instrument机制实现一个简单的热更新案例。 总体来说,步骤如下: 创建一个带premain方法的jar包。这个方法定时检测某个文件然后进行热更新。命令行启动业务类时使用参数…

热更新 深度解析

APP热更新方案 为什么要做热更新 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。 重点是还会有原来的版本遗留…

webpack热更新

什么是模热更新?有什么优点 模块热更新是webpack的一个功能,它可以使得代码修改之后,不用刷新浏览器就可以更新。 在应用过程中替换添加删出模块,无需重新加载整个页面,是高级版的自动刷新浏览器。 优点&#xff1a…

electron 热更新

1. electron自带的整体更新方式 (全量更新) 这种方式为electron官方的升级更新方式,主要是通过主进程中的autoUpdater模块进行检测升级更新的,此方式也是大家常见的大多数electron应用程序的更新方式。 检测到新版本后从服务器拉…