Pues a mí me devuelve un código HTTP 302. No sé como maneja esto internamente AJAX, pero el caso es que el header location es una cabecera HTTP y el cuerpo de la página viene vacío:
Create un prueba.php:
Código PHP:
<?
header("Location: http://www.google.com");
?>
Si estás en windows haz lo siguiente:
inicio --> ejecutar --> teclea cmd --> pulsa ENTER --> Escribe lo siguiente
telnet localhost 80 [ENTER]
GET /prueba.php HTTP/1.1 [ENTER]
HOST: localhost [ENTER 2 veces]
A mí me devuelve esto:
HTTP/1.1 302 Found
Date: Wed, 27 Dec 2006 18:03:08 GMT
Server: Apache
Location: http://www.google.com
Content-Length: 0
Content-Type: text/html; charset=ISO-8859-1
Y como ves, esto sólo informa al navegador a qué url tiene que hacer la petición.
Probablemente el objecto XMLHttpRequest llame a google (en este caso) en los estados anteriores a readystate==4, pero no lo sé.
Has probado a hacer un alert(ajax.responseText) o a cargar en una textarea el responseText para ver que es lo que cargas?