si devi fare così
pagina html
codice:
<html>
<head>
<script type="text/javascript">
function showData(str)
{
if (str=="")
  {
  document.getElementById("showData").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("showData").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getdata.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<table width="800" border="1">
<tr><td colspan="2">
<center><h2>Cambiare Dinamicamente il contenuto di una pagina con Ajax & PHP</h2></center></td>
</tr>
<tr>
<td width="200">
<form>

<input type="button" onclick="showData(this.value)"   value="voce 1"/>
<input type="button" onclick="showData(this.value)"   value="voce 2"/>
<input type="button" onclick="showData(this.value)"   value="voce 3"/>
<input type="button" onclick="showData(this.value)"   value="voce 4"/>

</form>
</td>
<td><div id="showData">usa il menu per cambiare contenuto</div></td>
</tr>
</table>

</body>
</html>
getdata.php
Codice PHP:
<?php 
$q
=$_GET["q"]; 

if (
$q=="voce 1") {echo "Contenuto pagina 1";} 
if (
$q=="voce 2") {echo "Contenuto pagina 2";} 
if (
$q=="voce 3") {echo "Contenuto pagina 3";} 
if (
$q=="voce 4") {echo "Contenuto pagina 4";} 
?>
se nel file html cambi la voce che si visualizza nel bottone che attualmente è voce1, voce2, etc devi mettere lo stesso nome anche le file php dove ora c'è $q=="voce 1", $q=="voce 2" quindi se nel bottone della prima pagina vuoi scrivere "chi siamo" il file php diventa così

Codice PHP:
<?php 
$q
=$_GET["q"]; 

if (
$q=="chi siamo") {echo "Contenuto pagina 1";} 
if (
$q=="voce 2") {echo "Contenuto pagina 2";} 
if (
$q=="voce 3") {echo "Contenuto pagina 3";} 
if (
$q=="voce 4") {echo "Contenuto pagina 4";} 
?>