1

私はこのプログラミング ビジネス全体に不慣れで、自分用に簡単な Web サイトを作成しようとしています。

現在、ウェブサイトにはヘッダー、いくつかのナビゲーション リンク、ナビゲーションの下にその場しのぎの画像 (後で修正され、質問とはあまり関係ありません) があり、その下には 3 つのコンテンツ div があります。メインのコンテンツ div と、その右側にある 2 つの部分は、おそらく Twitter フィードや広告などのサイドバー ウィジェットにする予定です。

外部ページが左列の div (メイン コンテンツ領域) 内に読み込まれるように、ナビゲーション リンクを設定しました。Ajax は見事に機能します。そのままで、缶に書かれているとおりに正確に機能します。

問題は、各ナビゲーション リンクが javascript:ajaxpage('pageaddress.php','left-col'); を読み取ることです。

私がそれについて好きではないいくつかのこと:

  1. ページを更新すると、自然に index.php コンテンツが読み込まれます
  2. ウェブサイトのアドレスは閲覧中ずっと同じままであるため. たとえば、/About.php には変わりません。
  3. また、これはSEO的にもうまくいきません。個々のページのアドレス、タイトル、その他が必要であると仮定すると、そうします。

スクリプトには実際の問題はありません。十分に機能しますが、希望どおりに機能しないだけです。とにかく、ここに Ajax スクリプトがあります。

<script type="text/javascript">

/***********************************************
* Dynamic Ajax Content- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

var bustcachevar=1 //bust potential caching of external pages after initial request?     (1=yes, 0=no)
var loadedobjects=""
var rootdomain="http://"+window.location.hostname
var bustcacheparameter=""

function ajaxpage(url, containerid){
var page_request = false
if (window.XMLHttpRequest) // if Mozilla, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
page_request.onreadystatechange=function(){
loadpage(page_request, containerid)
}
if (bustcachevar) //if bust caching of external page
bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new             Date().getTime()
page_request.open('GET', url+bustcacheparameter, true)
page_request.send(null)
}

function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 ||                         window.location.href.indexOf("http")==-1))
document.getElementById(containerid).innerHTML=page_request.responseText
}

function loadobjs(){
if (!document.getElementById)
return
for (i=0; i<arguments.length; i++){
var file=arguments[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already     been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}

</script>

これがナビゲーションリンクの例です

<ul id="nav">
    <li><a href="javascript:ajaxpage('design.php', 'left-col');">Design</a></li>

各ページが div 内にロードされるように Ajax を変更する方法はありますか?また、URL を変更して、ページごとに異なるタイトルを使用できるようにし、Web サイトが更新時に index.php をロードしないようにする方法はありますか?

そうでない場合、ページをロードする方法の他のスクリプトを知っている人はいますか-必ずしもajaxである必要はありません-私がやりたいことをしている間だけ(差分URL、タイトルなど)

これは私の初めての投稿なので、うまくいけば私の質問は十分に明確であり、長いですが、適切にフォーマットされています.

ありがとう、クリス。

4

2 に答える 2