Php 通过ajax导航将页面加载到div中-有几个问题

Php 通过ajax导航将页面加载到div中-有几个问题,php,ajax,html,navigation,external,Php,Ajax,Html,Navigation,External,我对整个编程行业都是新手,我正试图为自己建立一个简单的网站 目前,该网站有一个标题,一些导航链接,导航下方的临时图像将在稍后进行修改,与问题无关,下面我有3个内容分区。主要内容部分,右边还有两个,我打算把它作为我的边栏小部件,可能是推特提要、广告之类的东西 我已经设置了导航链接,以便将外部页面加载到我左侧的主内容区域中。阿贾克斯的作品宏伟,因为它是,它完全按照锡上所说的 问题是每个导航链接都读取javascript:ajaxpage'pageaddress.php','left-col' 有两点

我对整个编程行业都是新手,我正试图为自己建立一个简单的网站

目前,该网站有一个标题,一些导航链接,导航下方的临时图像将在稍后进行修改,与问题无关,下面我有3个内容分区。主要内容部分,右边还有两个,我打算把它作为我的边栏小部件,可能是推特提要、广告之类的东西

我已经设置了导航链接,以便将外部页面加载到我左侧的主内容区域中。阿贾克斯的作品宏伟,因为它是,它完全按照锡上所说的

问题是每个导航链接都读取javascript:ajaxpage'pageaddress.php','left-col'

有两点我不喜欢:

刷新页面时,它将自然加载index.php内容 因为网站地址在整个浏览过程中保持不变。比如说,它不会变为/About.php。 而且,这对搜索引擎优化也不起作用。假设我想要单独的页面地址、标题,以及其他我不想要的东西。 脚本没有真正的问题,它确实可以工作,只是不能按我希望的方式工作。这里是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>
有没有一种方法可以改变Ajax,使每个页面在div中加载,同时也可以更改url,使每个页面都有不同的标题,还可以防止网站在刷新时加载index.php

如果没有,是否有人知道任何其他加载页面方法的脚本-不一定是ajax-只在执行我希望它修改URL、标题等的操作时才加载到div中

这是我第一次发帖,希望我的问题足够清楚——虽然很长——并且格式正确


谢谢,Chris。

对于简单的Ajax处理,您可以使用例如jQuery

但这并没有改变任何关于改变url的问题。为此,您应该使用哈希。您的URL看起来像index.phpabout或../about。您可以在后检查该字符串并显示单个页面

var hash = "default.html";
if(window.location.hash)
  hash = window.location.hash.substring(1);

switch(hash){
  case "default":
    showPage(1);
  break;
  case "news":
    showPage(2);
  break;
  // ...
}

看看这个问题


在handler index.php中,您可以设置title,content include base on$\u SERVER['REQUEST\u URI']。

谢谢,我会让您知道我是如何获得响应的。正如我所说,我只是一个编程新手,HTML对我来说仍然是一个要求,所以我需要一段时间来理解它。也许比我现在的水平高几级,读中文的机会会更大。感谢您花时间阅读我的问题并回答。今晚我会回来告诉你们我是如何处理我的问题的