gpt4 book ai didi

jquery - pjax 无法与 laravel 一起使用

转载 作者:行者123 更新时间:2023-12-01 03:14:10 25 4
gpt4 key购买 nike

我正在尝试设置 pjax,但它不起作用。每当我点击 pjax 链接时,网址都会更改为 domain.com/foo (没有 html 内容更改),然后它更改为 domain.com/# 然后正常重定向到 domain.com/foo。为什么?

这就是我触发 pjax 的方式:$(document).pjax('a[data-pjax]', '#wrapper');

在我的 Controller 中我有这个:

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 header 运行标准 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); }
})

最佳答案

你太接近了:D

JS:

$(document).pjax('a[data-pjax]', '#wrapper', { fragment: '#wrapper});

更改为 # 并随后重新加载是因为 pjax 可以工作,但找不到 id #wrapper 的 HTML 元素,因此它会超时并重新加载页面。这种行为是需要的,因为较旧的浏览器(没有 Pushstate/popstate/ajax 支持)会加载所有链接,就像页面是静态的一样。

尝试更改此设置:

 if (Request::header('X-PJAX'))
echo '<div id="wrapper"> pjaxxx </div>';
else
$this->layout->content = $content;

我知道你已经使用history.js解决了这个问题,但是pjax解决了愚蠢的hashbanging,并且一旦实现就很容易使用。

希望您仍然阅读本文,干杯!

关于jquery - pjax 无法与 laravel 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19334759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com