jQuery pjax 简单入门

abcd23212年前前端开发746

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{ 
    // 正常请求的处理方式 
};


相关文章

jQuery.raty.js星星评分插件使用

jQuery.raty.js星星评分插件使用

在做前端开发的过程中,我们经常用到星星评分插件。这里推荐一jquery,raty.js是一个专门用来做评分的。星星显示的效果如下:<script src="js/jquery...

背景图片靠右对齐,并且间距从右算起

假如右边有个小箭头需要右对齐并且垂直居中,可以写成 background:url("images/icon.png")no-repeat right center;如果需要离右边1...

CSS之文本两端对齐

CSS之文本两端对齐

说起text-align,大家一定都不觉得陌生,我们常用关键字left、right、center实现行内元素相对父元素左、右、居中对齐,当然我们也使用justify来实现文本两端对齐。如上图,两端对齐...

移动端自适应Rem自适应js

    当我们指定一个元素的font-size为2rem的时候,也就说这个元素的字体大小为根元素<html>字体大小的两倍,如果html的font-size为12p...

iframe背景透明设置方法

iframe的背景颜色在IE下为window的当前窗口颜色(默认白色,可以在显示外观处对其进行设置),这导致在大幅背景上插入iframe时,需要给它“透底”,可是IE不支持对iframe设置背景色,那...

flex布局设置单个子元素靠右

父元素设置了flex 布局display: flex; align-items: center;如何让某个子元素靠右呢?方法一flex: 1; text-a...

发表评论    

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