1

我正在尝试使用 PJAX 编写一个在运行时将内容加载到 div 中的站点。我使用 PJAX 请求的 PHP 文件都包含页眉和页脚,仅在以下情况下才会生成内容isset($_SERVER['X-PJAX'])

但是,当我使用 PJAX 加载 PHP 文件时,整个页面都会刷新。我认为我的 PJAX 代码有问题,但加载纯 HTML 文件可以正常工作。

编辑:如果有帮助,我目前正在本地主机上运行的 WAMP Server 2.2 上运行所有这些。这就是我所做的所有开发工作。

作为参考,这是我用来加载内容的 JS,以及一个 php 页面的示例

JS:

if ( $.support.pjax ) {
    //disable <a> tabs, store value of href so pjax can use it
    $('header a').each(function () {
        $(this)
            .attr('pjax', $(this).attr('href'))
            .removeAttr('href')
            .css('cursor','pointer')
    })

    //link up the pjax
    .live('click', function () {
        var link = $(this)
        $('#content').animate({opacity:0}, {duration:500, complete:function(){
            $.pjax({
                url: link.attr('pjax'),
                container: '#content',
                complete: function() {
                    $('#content').animate({opacity:1}, 500);
                }
            });
        }});
    });
}

PHP:

//header.php
<?php
//If we are loading with pjax, ignore the header
if (!isset($_SERVER['X-PJAX'])) {
?>
<!-- head section, opening body tags, etc -->
<div role="main" id="content">
<?php } ?>

//foo.php
<?php include 'header.php'; ?>
<p>sample content</p>
<?php include 'footer.php'; ?>

//footer.php
<?php
if (!isset($_SERVER['X-PJAX'])) {
?>
</div>
<!-- load scripts, etc-->
<?php } ?>
4

1 回答 1

6

我总是有更多的运气只是使用

 $_SERVER["HTTP_X_PJAX"]

这是我由一个功能齐全的 PJAX php 示例制作的 github 存储库,适用于那些需要查看所有源代码才能启动和运行的人,并且可以帮助其他任何搜索 PJAX php 实施的人

https://github.com/Jrizzi1/pjaxphp

于 2012-06-22T02:39:15.637 回答