2012-04-04 89 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 - 無需配置。