15

我在 chrome 和 firefox 中尝试过 pjax 示例,我将示例代码放入我自己的应用程序中,但它仍然会重新加载整个页面。AJAX 请求发生然后页面继续前进而不更新#main div

<html>
    <head>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.0/jquery-1.8.0.min.js"></script>
        <script src="http://localhost:8888/jul/js/jquery.pjax.js"></script>


         <script type="text/javascript">
            // $(document).ready(function(){
            //   $('a[data-pjax]').pjax();
            // })

        // $(document).ready(function(){
        //     $('a').pjax({

        //    container: '#main'
        //  })
        $('document').ready(function(){
           $('ul a').pjax('#main')
        });


         </script>
    </head>
    <body>
        11:59:36        <div id="main">
             <div class='loader' style='display:none'><img src='http://localhost:8888/jul/imgs/spinner.gif'></div><ul>

  <li><a data-pjax='#main' href="/jul/stats/pjax_stats/index/">Index</a></li>
  <li><a data-pjax='#main' href="/jul/stats/pjax_stats/total_posts/">total_posts</a></li>

  <li><a data-pjax='#main' href="http://localhost:8888/jul/stats/pjax_stats/index">Index</a></li>
  <li><a data-pjax='#main' href="http://localhost:8888/jul/stats/pjax_stats/total_posts">total_posts</a></li>
  <li><a href="http://localhost:8888/jul/stats/pjax_stats/total_graph">total_graph</a></li>
  <li><a href="http://localhost:8888/jul/stats/pjax_stats/twitter_graph">twitter_graph</a></li>
  <li><a href="http://localhost:8888/jul/stats/pjax_stats/facebook_graph">facebook_graph</a></li>
</ul>index files




        </div>

    </body>
</html>

我尝试了多种方法来调用 pjax,也许其他人可以指出我哪里出错了?Ajax/GET 似乎在 firebug 控制台中返回正常 - 这是我的 php 的一个示例,它产生 pjax 响应

public function total_posts(){
        // print_r($_SERVER);

        if (!isset($_SERVER["X_PJAX"])) {
            $this->load->view('stats/pjax_stats/header');
            $this->load->view('stats/pjax_stats/links');
        }else{
            echo "pjax";//add in for debug
        }

        echo "total posts";

        if (!isset($_SERVER['X-PJAX'])) {
            $this->load->view('stats/pjax_stats/footer');
        }



    }

一个错误?

最新版本中似乎存在一个错误,其中附加变量到发出 ajax 请求的 url 的末尾是 _pjax=container 而不是 _pjax=true

4

2 回答 2

35

您是否尝试将超时设置得更高(默认 < 1s )?

例如:

$('document').ready(function(){
  $('ul a').pjax({
    container: '#main',
    timeout: 5000 #ms
  });
});
于 2012-08-28T12:54:07.127 回答
0

我想我会添加一个答案,因为我今天遇到了这个问题,这是谷歌的第一个结果。

在您更改超时之前,请确保您的容器存在。这听起来很明显,但是如果您使用框架,比如 Yii2 (PHP),您会发现您的容器 ID 在两次刷新之间可能不再存在,因此 pjax 正在刷新整个页面。

因此请注意:在使用超时进行调整之前,请确保您的容器存在。

于 2015-08-05T12:31:35.373 回答