jQuery pjax 简单入门

abcd23216个月前前端开发257

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

<!DOCTYPE html>
<html>
<head>
  <title>pjax</title>
  <meta charset="utf-8"></head>
  <body>
      <h1>My Site</h1>
      <div>
          Go to <a href="demo.php">第一页</a>
      </div>
      <div id="container"></div>
      <script src="../jquery-2.1.4.min.js"></script>
      <script src="../jquery.pjax.js"></script>
      <script type="text/javascript">$(document).pjax('a', '#container')</script>
  </body>
</html>

demo.php

<?php 
echo "<div style='background:red;'>第一页</div>";
?>

解释:$(document).pjax('a', '#container')其中a是触发元素,#container是装载pjax返回内容的容器


这种模式下除了当前使用ajax可以无刷新浏览外,还要保证直接请求改变的URL后也可以正常浏览,所以后端要对这些处理下。


PHP 判断是否为 AJAX 请求

jQuery 发出 ajax 请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息内容为:XMLHttpRequest

在后端可以使用 $_SERVER["HTTP_X_REQUESTED_WITH"] 来获取。(注意:中划线换成了下划线,不区分大小写)

由此,我们可以这样来判断是否为 ajax 请求:

// php 判断是否为 ajax 请求   
if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){ 
    // ajax 请求的处理方式 
}else{ 
    // 正常请求的处理方式 
};


相关文章

用JS获取地址栏参数的方法

采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!)function GetQueryString(name) {      v...

css动画是可以暂停的

css动画是可以暂停的

css动画大家都不陌生,但是你知道css动画是可暂停的吗?如果你不知道就来看看吧。虽然用过很多次animation,但是也就前几天才知道动画是可以暂停的,可见自己对动画的了解还是不够深,一起来学习一下...

滚动条触动css动画效果——WOW.js

在一些网页上,当你滚动页面的时候会看到各式各样的元素动画效果,非常动感。WOW.js 就是一款帮助你实现这种 CSS 动画效果的插件,很容易定制,你可以改变动画设置喜欢的风格、延迟、长度、...

取消chrome浏览器下input和textarea的默认样式

chrome浏览器下的input和textarea在聚焦的时候都有一个黄色的边框,而且textarea还可以任意拖动放大,这是不能容忍的,影响美观不说,有时候拖动textarea还会使页面布局错乱,所...

kindeditor编辑器插入mp4视频不显示及不过滤video的方法

传视频是单独做了htm5的video调用,所以在电脑及移动设备上访问没问题,但是很多地方比如题目,题目解析等都在kindeditor编辑器里面添加的,因为肯定要添加图文,但是添加视频的话,因为kind...

纯CSS解决锚点跳转偏移

能用css自然不想用js解决,因为在加载方面,css总是先加载,并且速度很快。.div{    position:relative;   &nbs...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。