`
zhanghh315
  • 浏览: 16671 次
  • 性别: Icon_minigender_2
  • 来自: 长春
社区版块
存档分类
最新评论

转:pjax:ajax和pushState结合的js库

    博客分类:
  • ajax
阅读更多

 

pajax是使用ajax+pushState打造无刷新改变URL的方式。虽然这种方式是将ajax、history.pushState、history.replaceStatte、window.onpopstate等几个技术点结合,但在具体使用中还是要考虑到很多情况的,如:

1、改变内容的时候也要改变title

2、不支持的浏览器如何处理

3、事件如何绑定,是否使用了delegate模式

4、ajax异常处理

5、ajax前后的自定义事件等

介于有上面等多的疑问,将ajax和pushState封装下,供后面使用还是非常有帮助的。本文就是对pjax(ajax+pushState)的一个介绍

 

介绍

pjax是对ajax + pushState的封装,让你可以很方便的使用pushState技术。

同时支持了缓存和本地存储,下次访问的时候直接读取本地数据,无需在次访问。

并且展现方式支持动画技术,可以使用系统自带的动画方式,也可以自定义动画展现方式。

目前只提供了基于jquery的版本,后续将增加基于qwrap, tangram等版本。

如何使用

将jquery.pjax.js部署到你的页面中,将需要使用pjax的a链接进行绑定(不能绑定外域的url),如:

 

$('a').pjax({
       container: '#container', //内容替换的容器
       fx: 'fade',  //展现的动画,支持默认和fade, 可以自定义动画方式。
       cache: true,  //是否使用缓存
       storage: true,  //是否使用本地存储
       titleSuffix: '' //标题后缀
   })

 事件(events)

一般情况下使用ajax来获取数据的时候,我们都希望有个loading的效果,pjax本身不提供这个功能,但提供了2个相关的事件。 如果需要这样的功能,可以在事件里实现这种功能。

  • start.pjax 在pjax ajax发送request之前调用
  • end.pjax 在phax ajax结束时调用

这样你可以在start.pjax事件里显示loading效果,在end.pjax事件里隐藏loading了。如:

 

$('#container').bind('start.pjax', function(){
    $('#loading').show();
})
$('#container').bind('end.pjax', function(){
    $('#loading').hide();
})
 

浏览器支持

提供了history.pushState接口的浏览器才支持这个功能,$.support.pjax是用来判断浏览器是否支持的。

如果浏览器不支持这个功能而调用pjax方法的话,实际上什么都没做,还是使用默认的链接响应机制

后端需要做的

类似于ajax, 异步请求的时候后端不能将公用的内容也返回。

所以需要一个判断是否pjax请求的接口。如:php可以借鉴下面的实现

 

function gplus_is_pjax(){
    return array_key_exists('HTTP_X_PJAX', $_SERVER) && $_SERVER['HTTP_X_PJAX'] === 'true';
}
 

下载源代码

pjax已经开源,代码放在https://github.com/welefen/pjax 上,欢迎大家访问和下载。

其他

实际上该类的封装借鉴于https://github.com/defunkt/jquery-pjax

对其增加了缓存、本地存储和动画等功能,并且将一些参数进行了优化。

分享到:
评论

相关推荐

    Query插件pjax,修改pjax再次请求的时候部分js没有加载,它通过ajax和pushState技术提供了极速的(无刷新ajax加载)

    Pjax(PushState + Ajax)这个名字很好地概述了它的核心功能:结合了Ajax的异步数据获取和HTML5 History API的PushState特性。在本文中,我们将深入探讨jQuery Pjax的工作原理、常见问题及其解决方法。 ### 1. Pjax...

    pjax (ajax + pushState的封装) 无刷新翻页等.zip

    它结合了Ajax(异步JavaScript和XML)和HTML5的History API(尤其是PushState方法),旨在提供更快的页面加载速度,提升用户体验,同时保持URL的可书签性和回退功能。 **Ajax简介** Ajax(异步JavaScript和XML)...

    pjax是对ajaxpushState的封装让你可以很方便的使用pushState技术

    **Pjax(Push State + Ajax)** 就是为了解决这一问题而出现的一个技术,它是对Ajax和`pushState()`的封装,简化了它们的使用,使得开发者可以更轻松地实现无刷新页面跳转。Pjax的核心思想是,当用户点击链接时,...

    zheng.pjax.js:一个使用ajax和pushState的jQuery插件

    pjax ( { selector : 'a' , container : '#content' } ) ; 服务器 /** * index * @return * @throws Exception */ public View index() throws Exception { JspView view; String user_agent = request . ...

    grails-pjax:Grails Pjax插件云可帮助您在Grails中使用pjax

    Pjax是一个jQuery插件,它使用ajax和pushState通过真正的永久链接,页面标题和后退按钮提供快速浏览体验。 查看更多或访问 ##为什么要用Pjax? 只是使用ajax从远程加载容器? 是的,但不仅如此。 不再加载css和js...

    pjax:pushState + ajax = pjax,一个轻量级的纯JavaScript pjax库,或仅用作ajax

    睡衣pushState + ajax = pjax,一个轻量级的纯JavaScript pjax库,或仅用作ajax为什么所以您问自己,为什么还要另一个pjax库? 简而言之,恕我直言,大多数其他库都过于复杂,使用仅仅是一种方式,最重要的是,库与...

    pjax+asp.net

    Pjax,全称为Push State + AJAX,是一种优化网页加载速度的技术,它结合了浏览器的History API(HTML5中的pushState和replaceState方法)和AJAX(异步JavaScript和XML)来实现页面的部分更新,从而避免了整个页面的...

    pjax代码包最新版

    Pjax(Push State + AJAX)是一种优化网页用户体验的技术,它结合了HTML5的History API(PushState)和AJAX(Asynchronous JavaScript and XML)技术,主要用于实现页面的无刷新加载,提升用户在浏览网站时的流畅性...

    pjax 示例代码

    Pjax,全称是Push State + AJAX,是一种结合了HTML5 History API和AJAX技术的网页开发方式,它的主要目标是实现页面的快速加载,提升用户体验,同时保持浏览器历史记录的连贯性。在传统的AJAX应用中,虽然可以异步...

    pjax:在任何网站上轻松启用快速Ajax导航(使用pushState + xhr)

    轻松在任何网站上启用快速AJAX导航(使用pushState()+ XHR) Pjax是一个独立JavaScript模块,使用 (XmlHttpRequest)和来提供快速的浏览体验。 它使您可以完全改变标准网站(服务器端生成的网站或静态网站)的...

    前端项目-Pjax-Standalone.zip

    1. **源代码**:JavaScript文件,实现了Pjax的核心逻辑,可能有一个主文件如`pjax.js`,负责事件监听、Ajax请求和DOM操作。 2. **示例**:一个或多个HTML文件,展示了如何在实际项目中集成和使用Pjax库。 3. **样式*...

    pjax demo实例 可以研究下

    1. **History API**:HTML5引入了History API,包括`history.pushState()`和`history.replaceState()`方法,它们允许我们在不重新加载页面的情况下改变URL。当用户点击链接时,Pjax首先使用这些方法更新浏览器的URL...

    使用Yii整合的pjax(pushstate+ajax)实现无刷新加载页面

    Pjax(Pushstate + Ajax)是一种结合了浏览器的历史状态API(history.pushState)与Ajax技术的技术,它允许用户在浏览网站时,只更新页面的一部分内容,而无需完全刷新页面。Pjax的核心在于history.pushState,这是...

    最新pjax实现无刷新demo演示下载

    3. **处理响应**:服务器返回新内容后,Pjax将这些内容插入到页面的适当位置,同时使用`pushState()`更新浏览器的URL和历史记录。 4. **页面动画效果**:为了增强用户体验,通常会添加一些过渡动画,使得页面内容的...

    wordpress-kratos-pjax-0.4.4

    Pjax,即PushState + AJAX的缩写,是一种网页应用技术,允许我们在不刷新整个页面的情况下,只更新部分DOM元素。这种技术结合了传统HTTP请求的URL管理和AJAX的局部内容更新,从而实现了快速的页面导航。在WordPress...

    Laravel开发-pjax

    在 Laravel 框架中,Pjax(Push State + AJAX)是一种增强网页用户体验的技术,它允许用户在不重新加载整个页面的情况下更新内容,只刷新部分区域,从而提高页面加载速度和交互性。Pjax 结合了浏览器的 History API ...

    django-easy-pjax:适用于Django的Easy PJAX

    2. **PJAX原理**:PJAX结合了HTML5的History API(用于改变浏览器的URL而不实际跳转)和AJAX(异步JavaScript和XML,用于在不刷新整个页面的情况下更新部分内容)。当用户点击链接时,PJAX会发送一个Ajax请求,...

    Ajax-jquery-pjax.zip

    Ajax-jquery-pjax.zip,pushState ajax=pjax,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的情况下更改。

    使用ajax和history.pushState无刷新改变页面URL示例

    本篇文章介绍的是利用AJAX技术和HTML5中新增的History API中的history.pushState和history.replaceState方法,实现在不刷新页面的情况下改变浏览器的URL地址。下面将详细介绍这些技术的具体用法和应用场景。 ### ...

Global site tag (gtag.js) - Google Analytics