AJAX を介してページを動的にロードする Web サイトを作成しています。私はHistory.jsを使用していますが、私はそれを正しく行っていないと思います。
基本的に、index.phpページと他のいくつかのページ ( portfolio.php、contact.phpなど) があります。これらの追加の php ファイルに含まれているのは、 #post-contentと呼ばれるインデックス ページの DIV のコンテンツを動的に置き換える必要がある単純な HTML/PHP コードです。
インデックス ページのメニュー リンクをクリックすると、onClickイベントで JS 関数showPage()が呼び出され、「.php 」を引数として使用せずにページ名のみが呼び出されます。関数は次のように宣言されます。
function showPage(page) {
var History = window.History;
History.pushState(null, page, "index.php?page=" +page);
$("#post-content").load(page + ".php");
}
上記の関数には、 fadeInやfadeOutなどの他の視覚効果も実装されていますが、ここではコードを読みやすくするためにそれらを削除しました。
この関数は、必要なものすべて、またはほとんどを提供してくれます。Google Chrome でウェブサイトをテストし、メニューの特定のリンク (「ポートフォリオ」など) をクリックすると、正しく?page=portfolio.phpに移動します。これは、ブラウザーに手動で URL を入力した場合には発生しません (たとえば、他の誰かがそのページへの直接リンクを教えてくれた場合)。これは、関数 showPage() が呼び出されていないためです。
そこで、index.php ページの上に外部コードを含めました。
<?php
if(isset($_GET['page'])) { // Checks if the url contains the "page" parameter.
?>
<script>
$(function() {
showPage('<? echo htmlentities($_GET['page']); ?>');
});
</script>
<?
}
?>
これにより、私が望む結果が得られます。
この時点で、専門家のアドバイスが必要です。私はそれを正しくやっていますか?これは、Web サイト内に jQuery AJAX を実装する正しい方法ですか? 私はそれを間違っていると思います、非常に間違っています。Web 上の Coes は私のものとは大きく異なりますが、すべてうまく機能しているように見えます。私は何をすべきか?
この議論の助けをいただければ幸いです:) ありがとうございます!