为什么jquery pjax会剥离最外层的标签


Why jquery-pjax does strip an outermost tag?

我是jquery pjax的新手。现在,我正在使用PHP和jQuery开发一个灵活的(无需异步刷新和加载内容)单网页。但是在使用jquery pjax时,我的页面中出现了一些问题。其中一个问题是jquery-pjax将在异步响应中自动剥离最外层的标记。

让我看看我的源代码。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="jquery.min.js"></script>
        <script src="jquery.pjax.min.js"></script>
        <script>
            $(document).pjax('#pjax-container a', '#pjax-container', {
                timeout: 1300,
                replace: true,
                fragment: 'body'
            });
        </script>
    </head>
    <body>
        <?php
        if (!isset($_SERVER['HTTP_X_PJAX']))
        {
        ?>
        <h1>A jquery-pjax test page.</h1>
        <div id="pjax-container">
            <?php
            }
            ?>
            <a href=".">Refresh</a>
        <?php
        if (!isset($_SERVER['HTTP_X_PJAX']))
        {
        ?>
        </div>
        <?php
        }
        ?>
    </body>
</html>

仅就源代码而言,似乎没有任何问题。但当运行它并单击刷新链接时,该链接将被删除,并且只有其标题。我在浏览器中看到了一个网络监视器,在新的异步响应中有链接。(正文:<body><a href=".">Refresh</a></body>)但我看到了一个元素监视器,没有链接。。。(正文:<div id="pjax-container">Refresh</div>

问题:为什么jquery pjax会剥离outhermost标记?

谢谢。

我无法重现您的问题。我设置了两个页面,就像你的脚本会吐出一样

  • http://jsbin.com/potuputaha/2/edit
  • http://jsbin.com/tutebebufi/1/edit

当你跑步的时候http://jsbin.com/potuputaha/2,按下链接将用第二页的<a href="#">Refresh me</a>替换该页。