请求PHP文件时PJAX无法正常工作

时间:2012-02-27 03:21:35

标签: php javascript pjax

我正在尝试使用PJAX编写一个内容在运行时加载到div中的网站。我使用PJAX请求的PHP文件都包含页眉和页脚,只有在isset($_SERVER['X-PJAX'])

时才生成内容

但是,当我使用PJAX加载PHP文件时,整个页面都会刷新。我认为我的PJAX代码有问题,但加载纯HTML文件效果很好。

编辑:如果它有帮助,我目前正在运行在localhost上的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 } ?>

1 个答案:

答案 0 :(得分:6)

我使用

总能带来更多好运
 $_SERVER["HTTP_X_PJAX"]

这是github repo我用一个功能齐全的PJAX php示例,对于那些需要所有源代码来查看启动和运行的人,并且可以帮助其他人在那里搜索PJAX php inplementation

https://github.com/Jrizzi1/pjaxphp