pjax仍然会执行整页重新加载

时间:2012-08-17 11:04:13

标签: javascript jquery pjax

我在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控制台中恢复正常 - 这是我生成pjax响应的php的一个例子

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末尾的append变量是_pjax = container而不是_pjax = true

2 个答案:

答案 0 :(得分:34)

您是否尝试过高设置(默认值<1s)?

例如:

$('document').ready(function(){
  $('ul a').pjax({
    container: '#main',
    timeout: 5000 #ms
  });
});

答案 1 :(得分:0)

我想我会在今天遇到这个问题后添加一个答案,这是Google的第一个结果。

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

作为注释:在调整超时之前确保您的容器存在。