2012-04-04 54 views
11

我一直想把你PJAX与我的PHP网站的工作,这是我使用它的代码:我只是用他们的PJAX演示页面上使用的代码如何使用PJAX? (?PJAX随着PHP)

<script src="js/jquery.js"></script> 
<script src="js/jquery.pjax.js"></script> 
    <script type="text/javascript"> 
     $(function(){ 
      // pjax 
      $('ul a').pjax('section') 
     }) 
    </script> 

,但是将他们使用的容器(#main)替换为我的网站的容器,即部分标签。控制台或页面上没有错误,但它也不起作用!我用

$(function() { $('ul a').pjax('section') });

$('document').ready(function(){ 
    $('ul a').pjax('section') 
}); 

但是,当我不使用任何这些的,只是在使用前$(“UL A”)。pjax(“节”)我看到这个错误控制台:对部分jquery.pjax.js

未捕获没有pjax容器(线:353)

我能得到一些帮助与此? 谢谢

+0

您的页面中是否有'

'标签?当X-PJAX头或'_pjax'搜索参数被发送时,你的服务器是否返回无镶边内容?你能链接到演示网址吗? – 2012-04-04 03:08:28

+0

其实我无法上传PHP的东西,但我只是用简单的纯HTML文件尝试完全相同的事情,但仍然是同样的事情。你可以在这里看到这个:http://sbtest.comoj.com – user1302430 2012-04-05 00:38:17

+0

在那个测试网站,用'$(function(){$('ul a')。pjax(“#main”,{fragment :“#main”});});'。或者将通话放在页面的底部。 – 2012-04-05 02:41:32

回答

10

默认情况下,pjax希望新页面在没有chrome的情况下交付 - 这是一个将用作容器的innerHTML的HTML片段。

在你的例子中,容器将是我想的第一个<section>标签。我不知道如果pjax保证它会使用匹配选择器的第一个元素 - 它可能会替换每个匹配的元素。 也许最好使用ID选择器,如#main

无论如何,这听起来像你没有提供HTML片段,而只是整个页面。这几乎违背了pjax的目的,但可以通过在下载的内容中指定一个片段来支持它。几乎总是这将是一个选择器,匹配将被替换的容器。

因此,假设你用一个容器@id=main你可以调用pjax与

$(function() { $("ul a").pjax("#main", { fragment: "#main" }); }); 

确保pjax在文档加载后调用,否则容器查找将失败。

顺便说一下,切换到pushState辅助导航的更简单方法是使用我的HTMLDecor项目。它需要你改变生成HTML页面的观点,但一旦你完成了,你只需要将HTMLDecor.js脚本添加到页面中,并在适当的时候自动使用pushState - 无需配置。