编辑:(非)工作示例:
http://www.jogos-mmorpg.com/pjax.html


我正在尝试重现一个非常基本的 PJAX 示例,如自述文件( https://github.com/defunkt/jquery-pjax )中所述

这是 index.html:

<!DOCTYPE html>
<html>
    <head>
         <script src="http://pjax.heroku.com/jquery.js"></script>
         <script src="http://pjax.heroku.com/jquery.pjax.js"></script>

        <script type="text/javascript">
            $(document).ready(function(){
                $(document).pjax('a', '#pjax-container')
            });
        </script>

    </head>
    <body>

      <h1>My Site</h1>

      <div class="container" id="pjax-container">
        Go to <a href="./next.html">next page</a>.
      </div>

    </body>
</html>

这是 next.html
<p>next page</p>

当我点击“下一页”链接时,我只是转到 next.html 并且我在屏幕上看到的唯一内容是“下一页”段落,就像我完全禁用 pjax 一样。

我错过了什么?

最佳答案

您是否阅读了整个示例页面?因为我会认为你没有,因为你没有在 OP 中提到它。
更具体地说,它说:

对我来说似乎 pjax 不是那么容易使用。您需要处理 X-PJAX header 的发送。
更新: 我已经在您的网站上测试了以下代码(使用 Firefox 控制台),并且它正在工作:

$(document).ready(function() {
    $("#pjax-container a").pjax(
        {
            container: "#pjax-container",
            timeout: 5000
        }
    );
});
请注意以下事项:
  • 我已经重组了代码,使其更符合 jQuery 标准,不确定这是否是问题所在。现在所做的是以下内容:

  • 在选择器 $("#pjax-container a") 上,它使用 pjax() 函数。


  • 将容器 #pjax-container 作为替换目标。

  • 我还添加了 timeout: 5000 ,因为我读到 pjax 最初的 timeout 设置非常低,所以它在慢速网络服务器上不起作用。

  • 另一个注意事项:我注意到 pjax 还将 window.location.href 更新为新的 url,请自行决定是否需要这种行为。

    关于jquery - 无法让基本的 pjax 示例工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20441820/

    10-13 03:46