我在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
答案 0 :(得分:34)
您是否尝试过高设置(默认值<1s)?
例如:
$('document').ready(function(){
$('ul a').pjax({
container: '#main',
timeout: 5000 #ms
});
});
答案 1 :(得分:0)
我想我会在今天遇到这个问题后添加一个答案,这是Google的第一个结果。
在更改超时之前,请确保您的容器存在。这可能听起来很明显,但如果您使用框架,比如Yii2(PHP),您会发现刷新之间可能不再存在容器ID,因此pjax会刷新整个页面。
作为注释:在调整超时之前确保您的容器存在。