私は完全にjqueryを利用したWebサイトを構築しているため、ajaxを使用してすべてのページを動的にロードして、ページ間の派手な遷移を実現し、ユーザーエクスペリエンスを最大化しています. ここに私のJavaScriptコードがあります:
$(function() {
var path = _.compact(location.pathname.split("/"));
if(path.length<2){
path = 'home'
}else{
path = path[path.length-1];
}
activepage = path;
$('.nav a').click(function(e) {
href = $(this).attr("href");
loadContent(href);
// HISTORY.PUSHSTATE
window.history.pushState('', 'New URL: '+href, href);
e.preventDefault();
});
// THIS EVENT MAKES SURE THAT THE BACK/FORWARD BUTTONS WORK AS WELL
window.onpopstate = function(event) {
var path = _.compact(location.pathname.split("/"));
if(path.length<2){
path = 'home'
}else{
path = path[path.length-1];
}
loadContent(path);
};
});
function loadContent(url){
// USES JQUERY TO LOAD THE CONTENT
var adresa = absurl + "ajax/get_content";
$.ajax({
url: adresa,
contentType: 'application/json',
data: { url: url },
success: function(data) {
switch(url)
{
case "projects": $.projects({ data : data }); $.projects.init();
break;
case "home": $.homePage({ data : data }); $.homePage.init();
break;
default: console.log("nista");
}
}
});
}
Ajax 関数は、ページを作成するために必要なすべてのデータを json 形式で返します。次に、その json データを使用してページを作成するカスタム プラグインを初期化します。
このLIVE EXAMPLEでわかるように、ブラウザーの履歴 (前後) を含め、すべてが完全に正常に機能します。しかし、ここに私の問題があります...ページが完全に読み込まれると、ページのソースを見るとメインコンテナは空のままです。また、Googleボットとしてページをフェッチしようとすると空になり、これら2つが関連していると確信しています。
この例とほとんど同じコードでわかるように、リンクをクリックするとソースが変更され、ページのコンテンツも変更されますが、ページをリロードする必要はありません。私の質問は、ここで何が欠けているのか、同じ効果を得る方法は? 私はいくつかのphpコードが欠けていますか?過去数日間、これに苦労しています。すべてを試しましたが、うまくいきませんでした。
注: 現在のところ、ホーム リンクとプロジェクト リンクのみが機能しています...
すべての返信に感謝します!