我正在尝试设置 pjax,但它不起作用。每当我单击 pjax 链接时,url 都会更改为domain.com/foo
(没有 html 内容更改),然后更改为domain.com/#
,然后正常重定向到domain.com/foo
. 为什么?
这就是我触发 pjax 的方式:
$(document).pjax('a[data-pjax]', '#wrapper');
在我的控制器中,我有这个:
public function getIndex() {
$posts = $this->loginOptions();
$this->layout->title = 'My title';
$content = View::make('foo.bar')
->with('title', $this->layout->title)
->with('posts', []);
if (Request::header('X-PJAX'))
return $content;
else
$this->layout->content = $content;
}
我的 HTML(我单击链接的第一页)如下所示:
<DOCTYPE html>
<head></head>
<html>
<body>
<div id='wrapper'>
<a data-pjax href='foo'>Foobar</a>
</div>
<script src='http://code.jquery.com/jquery-2.0.0.min.js'></script>
<script src='jquery.pjax.js'></script>
<script src='script.js'></script>
</body>
</html>
如果我使用 X-PJAX 标头运行标准 ajax 调用,我会得到正确的 html(这意味着我的 If 正在工作),但 url 没有改变,这就是我想使用 pjax 的原因。
$.ajax({
url: '/login',
type: 'get',
beforeSend: function(xhr){
xhr.setRequestHeader('X-PJAX', true);
xhr.setRequestHeader('X-PJAX-Container', '#wrapper')
},
success: function(resp) { $('#wrapper').html(resp); }
})