I've implemented more complex AJAX before with javascript and PHP, but for some reason this refuses to work. This is copied almost directly from the W3 example.
var xmlhttp;
function changeLoc(str)
 {
 xmlhttp=GetXmlHttpObject();
 if (xmlhttp==null)
   {
   alert ("Browser does not support HTTP Request");
   return;
   }
 var url="action.php";
 url=url+"?q="+str;
 url=url+"&sid="+Math.random();
 xmlhttp.onreadystatechange=stateChanged;
 xmlhttp.open("GET",url,true);
 xmlhttp.send(null);
 }
 function stateChanged()
 {
 if (xmlhttp.readyState==4)
 {
  alert(xmlhttp.responseText);
 }
 }
 function GetXmlHttpObject()
 {
 if (window.XMLHttpRequest)
   {
   // code for IE7+, Firefox, Chrome, Opera, Safari
   return new XMLHttpRequest();
   }
 if (window.ActiveXObject)
   {
   // code for IE6, IE5
   return new ActiveXObject("Microsoft.XMLHTTP");
   }
 return null;
 }
And the simple action.php
<?php
 echo 'here'; 
?>
The function changeLoc is called from a link on the html page. It gets into the readyState = 4 condition , but the alert is blank. I know it's something really simple, but I can't find it.
Thank you.