Yo lo hago así:
Primero hago la función con la que instanciaré el objeto ajax:
Código PHP:
function objetoAjax()
{
var xmlhttp=false;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
{
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
Y luego, en mi función con la que le mandaré los datos al PHP hago esto:
Código PHP:
function miFuncion()
{
//obtener valores a enviar
variable1 = menu.document.getElementById("miInput1").value;
variable2 = menu.document.getElementById("miInput2").value;
//instanciamos el objetoAjax
ajax=objetoAjax();
ajax.open("POST", "miPaginaDeDestino.php",true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
division = menu.document.getElementById("miDivision");
division.innerHTML = ajax.responseText;
}
}
//esto no se que es
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//envio los valores
ajax.send("texto1="+variable1+"&texto2="+variable2);
}
En este caso lo paso por POST pero también lo puedes pasar por GET. Hecho esto, solo tienes que ir a la página php a la que le has enviado los datos y hacer $_POST["texto1"] para la variable1 y lo mismo para la variable2.
Otra cosa importante es el
ajax.onreadystatechange, al que le asignas una función para que se ejecute en cuanto cambie. Puedes controlar varios estados del envio y recepción, pero cuando se cumple
if (ajax.readyState==4) es cuando el envio y la recepción ya han finalizado.
Por último, el contenido de la respuesta de tu página PHP lo obtienes de
ajax.responseText;. Que en mi caso lo inserto dentro de una division division.innerHTML = ajax.responseText;.
Para hacer que tu php mande datos de vuelta basta con que hagas un echo y ese echo es lo que aparecerá dentro del <div> al hacer division.innerHTML = ajax.responseText;.
Te pongo un ejemplo de una posible respuesta de tu PHP:
Código PHP:
<?php
$con = mysql_connect("xxxxxx","xxxxxxx","xxxxxx");
if (!$con)
die('Impossible connectar: ' . mysql_error());
mysql_select_db("yyyyyy", $con);
$sql = "SELECT Poblacion FROM datos WHERE Provincia = '".$_POST['provincia']."'";
$result = mysql_query($sql,$con);
$vector = array();
$poblaciones = array();
$num = mysql_num_rows($result);
if($num > 0)
{
echo "<span class=\"standard\">Poblacion: </span><select name=\"selPoblacion\" id=\"selPoblacion\">";
echo "<option value=\"0\">Todas las poblaciones</option>";
while($registro = mysql_fetch_array($result))
{
array_push($vector,$registro['Poblacion']);
}
$poblaciones = array_unique($vector);
$longitud = count($poblaciones);
for($i=0; $i < $longitud; $i++)
{
$j = $i + 1;
$nombre = array_shift($poblaciones);
echo "<option value=\"$j\">".$nombre."</option>";
}
echo "</select>";
}
else
{
echo "error";
}
?>
Ese es un documento que yo he usado para crear un select con las poblaciones de la provincia seleccionada anteriormente. Esa provincia la he mandado por POST y al seleccinarla en el select aparece otro select con las poblaciones que existen en mi BBDD que son de esa provincia. Y esto es todo.
Siento no explicartelo mejor.
Te he contestado, pero creo que no es el sitio adecuado para preguntar sobre el AJAX. Te creo que si te pasas por ahí quizás te contestarán mejor que yo.
Saludos!