luego de haberte respondido estuve realizando varias pruebas con formularios y ajax. eventualmente php puede recibir la informacion informacion por GET cuando se envia por POST. por lo que no te funciona por post con ajax es porque tienes que indicar el header content type en la peticion ajax. cuando no se le indica el content-type a la peticion ajax, este se envia con el valor application/xml.
Código:
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
por otro lado en la siguiente linea de php tienes error,
echo "El valor es: " + $id;. para concatenar cadenas se utiliza el operador punto (.).