編集:主な問題は、Web ページの基本的なデバッグを習得せずに最先端のブラウザー機能を使用しようとしていることです。
PHPでエラーを解決したgetallheaders()
ので、これは簡単です。
ステップ 1: http://www.bluereservations.com/pjax.phpをロードし、ブラウザー コンソールを開き、ページを更新して、コンソールでメッセージを確認します。
というエラーが報告されます$ is not defined
。これはjquery
、正常にロードされなかったことを示しています。
ステップ 2: http://www.bluereservations.com/jquery.jsをロードします。
謎が一つ解けました。
ページの明らかな問題をすべて片付けたら、さらにあいまいな問題を調べます。ネットワーク リソース、http 要求および応答ヘッダーなどの検査を含む pjax の場合。
Firebug for Firefox を使用している場合は、 http: //getfirebug.com/wiki/index.php/Net_Panelで詳細を確認してください。persist
pjax の場合、pjax が失敗した場合に備えてオプションをオンにする必要があります。
以下は、テストページの他の問題に対処する可能性があります...
リクエストに応答するときX-PJAX
は、ページ全体ではなく、メイン コンテンツのみを送信します。あなたのテストケースのようなもの
<?php $headers = getallheaders();
if($headers['X-PJAX'] == 'true'): ?>
first change
<?php else: ?>
<html>
<head>
<script src="jquery.js"></script>
<script src="jquery.cookie.js"></script>
<script src="jquery.pjax.js"></script>
<script type="text/javascript">
$(function() { $('a[data-pjax]').pjax(); });
</script>
</head>
<body>
<?php
$header = "this is first part
<br/> <a href='pjax2.php' data-pjax='main'>GO</a>";
$date = date("Y-m-d H:i:s");
$footer = "this is second part";
echo "$header<br/>$date<br /><div id='main'>first page</div><br />$footer";
?>
</body>
</html>
<?php endif; ?>
jquery-pjax では、X-PJAX
リクエストに応じてファイル全体を送信できます。fragment
オプションについては、ドキュメントを参照してください。
個人的には、 HTMLDecorは無料pushState
サポートを得るのにはるかに簡単な方法ですが、偏見があります。