Selects combinados con Ajax y PHP

  • Por
  • Ajax
Usando la librería xajax veremos como construir fácilmente un sistema de select combinados con PHP y Ajax.
Un ejemplo típico de las prestaciones de Ajax es la creación de selects combinados, es decir, una estructura de dos selects, donde uno tiene las posibles opciones en función de lo que se haya elegido en el otro. Veremos como hacer este sistema en PHP y Ajax, con la ayuda de la librería xajax, que nos facilitará bastante las cosas.

Este artículo viene a continuar una serie de artículos sobre el uso de xajax, que comenzamos en el artículo Xajax: Ajax para PHP.

Veamos el ejemplo que vamos a desarrollar en este artículo.

Nota: en este artículo presentamos una manera de hacer los selects combinados con Ajax y PHP utilizando Xajax versión 0.2.5. Hemos publicado unas notas para actualizar este código a la versión 0.5, por lo que os recomendamos leer el artículo Actualizar a Xajax 0.5.

Para empezar veremos el formulario inicial con el primer select y el segundo sin opciones.

<form name="formulario">
Provincia:
<br>
<select name="provincia" onchange="xajax_generar_select(document.formulario.provincia.options[document.formulario.provincia.selectedIndex].value)">
<option value="999">Selecciona provincia</option>
<option value=0>Madrid</option>
<option value=1>Valencia</option>
<option value=2>Barcelona</option>
<option value=3>León</option>
</select>
<br>
<br>
Población: <div id="seleccombinado">
<select name="poblaciones">
<option value=0>Elegir provincia</option>
</select>
</div>
</form>


Vemos que se tiene dos campos select, el primero para las provincias y el segundo para las poblaciones. El primer campo tiene todas las opciones posibles. El segundo select inicialmente no tiene ninguna opción, porque estas se deben incluir en función de la provincia escogida en el primer campo. Vemos que el segundo select está metido en una capa con id="selectcombinado", que actualizaremos luego con Ajax.

Además, hay que fijarse en el atributo onchange del primer select, que llama con Ajax, por medio de xajax, a la función PHP que se encargará de generar las opciones del segundo select.

Ahora vamos a ver una función PHP que generaría el código de un select en función de un parámetro que recibirá: la provincia. Con ese identificador de provincia generará el código del select con todas las poblaciones de esa provincia.

function select_combinado($id_provincia){
   //función para crear el select combinado
   //debe extraer las opciones de un select a partir de un parámetro
   
   //generamos unos arrays con distintas poblaciones de varias provincias
   //estos valores en un caso práctico seguramente se extraerán de base de datos
   //no habría que cargar todos en memoria, sólo hacer el select de las poblaciones de la provincia deseada
   $madrid = array("Madrid", "Las Rozas", "Móstoles", "San Sebastián de los Reyes");
   $valencia = array("Valencia", "La Eliana", "Paterna", "Cullera");
   $barcelona = array("Barcelona", "Badalona");
   $leon = array ("León", "Astorga", "Villamejil");
   $poblaciones = array($madrid, $valencia, $barcelona, $leon);
   
   //creo las distintas opciones del select
   $nuevo_select = "<select name='poblaciones'>";
   
   for ($i=0; $i<count($poblaciones[$id_provincia]); $i++){
      $nuevo_select .= '<option value="' . $i . '">' . $poblaciones[$id_provincia][$i] . '</option>';
   }
   $nuevo_select .= "</select>";
   return $nuevo_select;
}


La función anterior tiene poco de interés para lo que es el manejo de Ajax. Aquí hemos creado unos arrays para almacenar las poblaciones de las distintas provincias, pero en nuestras aplicaciones posiblemente tengamos las poblaciones en una base de datos. En ese caso lo que tendríamos que hacer es simplemente es una consulta y recorrer un conjunto de registros.

En definitiva, la función recibe un identificador de provincia, que se utiliza para recorrer el array asociado a la provincia y generar un campo select con una opción por cada población.

Ahora vamos a ver la función que hace uso de xajax para procesar y actualizar la página con Ajax para cambiar las opciones del segundo select.

function generar_select($cod_provincia){
   //instanciamos el objeto para generar la respuesta con ajax
   $respuesta = new xajaxResponse('ISO-8859-1');
   
   if ($cod_provincia==999){
      //escribimos el select de poblaciones vacío
      $nuevo_select = '<select name="poblaciones">
                  <option value=0>Elegir provincia</option>
                  </select>
                  ';
   }else{
      $nuevo_select = select_combinado($cod_provincia);
   }
   //escribimos en la capa con id="seleccombinado"
   $respuesta->addAssign("seleccombinado","innerHTML",$nuevo_select);
   
   //tenemos que devolver la instancia del objeto xajaxResponse
   return $respuesta;
}


Lo primero es instanciar un objeto de la clase xajaxResponse para generar la respuesta. Como se puede ver, recibimos el código de la provincia como parámetro. Comprobamos si ese código de la provincia es 999, porque es un caso especial (no se ha seleccionado ninguna provincia) y tenemos que generar el select de provincias vacío. En caso que el código de la provincia sea otra cosa entonces se lo pasamos a la función select_combinado(), vista anteriormente, para generar el select con las poblaciones de la provincia dada.

Para acabar, escribimos en la capa con id="selectcombinado" la cadena con el select que hemos generado. Para escribirlo utilizamos el método addAssign() del objeto de la clase xajaxResponse que ya conocíamos de anteriores ejercicios.

El código completo es el siguiente:

<?
//incluímos la clase ajax
require ('xajax/xajax.inc.php');

//instanciamos el objeto de la clase xajax
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->decodeUTF8InputOn();

function select_combinado($id_provincia){
   //función para crear el select combinado
   //debe extraer las opciones de un select a partir de un parámetro
   
   //generamos unos arrays con distintas poblaciones de varias provincias
   //estos valores en un caso práctico seguramente se extraerán de base de datos
   //no habría que cargar todos en memoria, sólo hacer el select de las poblaciones de la provincia deseada
   $madrid = array("Madrid", "Las Rozas", "Móstoles", "San Sebastián de los Reyes");
   $valencia = array("Valencia", "La Eliana", "Paterna", "Cullera");
   $barcelona = array("Barcelona", "Badalona");
   $leon = array ("León", "Astorga", "Villamejil");
   $poblaciones = array($madrid, $valencia, $barcelona, $leon);
   
   //creo las distintas opciones del select
   $nuevo_select = "<select name='poblaciones'>";
   
   for ($i=0; $i<count($poblaciones[$id_provincia]); $i++){
   //for ($i=0; $i<2; $i++){
      $nuevo_select .= '<option value="' . $i . '">' . $poblaciones[$id_provincia][$i] . '</option>';
   }
   $nuevo_select .= "</select>";
   return $nuevo_select;
}

function generar_select($cod_provincia){
   //instanciamos el objeto para generar la respuesta con ajax
   $respuesta = new xajaxResponse('ISO-8859-1');
   
   if ($cod_provincia==999){
      //escribimos el select de poblaciones vacío
      $nuevo_select = '<select name="poblaciones">
                  <option value=0>Elegir provincia</option>
                  </select>
                  ';
   }else{
      $nuevo_select = select_combinado($cod_provincia);
   }
   //escribimos en la capa con id="seleccombinado"
   $respuesta->addAssign("seleccombinado","innerHTML",$nuevo_select);
   
   //tenemos que devolver la instanciación del objeto xajaxResponse
   return $respuesta;
}
   
//asociamos la función creada anteriormente al objeto xajax
$xajax->registerFunction("generar_select");

//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequests();
?>

<html>
<head>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">
   <title>Validar usuario en Ajax</title>
   <?
   //En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
   $xajax->printJavascript("xajax/");
   ?>
</head>

<body>

<form name="formulario">
Provincia:
<br>
<select name="provincia" onchange="xajax_generar_select(document.formulario.provincia.options[document.formulario.provincia.selectedIndex].value)">
<option value="999">Selecciona provincia</option>
<option value=0>Madrid</option>
<option value=1>Valencia</option>
<option value=2>Barcelona</option>
<option value=3>León</option>
</select>
<br>
<br>
Población: <div id="seleccombinado">
<select name="poblaciones">
<option value=0>Elegir provincia</option>
</select>
</div>
</form>
</body>
</html>


Finalmente, podemos ver ejemplo en marcha aquí.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Xombra

19/6/2007
Excelente artículo, además fácil de entender

Freddy Mejia

19/6/2007
Esta buenisimo este tutorial, pero me gustaría hacer lo mismo con datos obtenidos través de una base de datos, como sería el codigo?

UN vez lo intente y me mostraba a veces los datso y otrsa veces me salio un error, no si era que la lista dependiente resultaba un poco extensa o que pero a ve ces salia y otras no.

oskar

20/7/2007
porque no publicar el código y vemos si hay errores?

Mauricio Gonzalez

21/8/2007
Alguien tiene un ejemplo como este pero con 3 combos dependientes?

Marcoss

07/10/2007
Hola, he probado el código que aparece en este ejemplo y no me funciona, cuando selecciono una ciudad en el 1 select no ocurre nada en el 2, no hace nada ¿por qué puede ser?

Gil

12/10/2007
Que tal. Bueno quiero aportar un poco y responder a la pregunta de Marcoss ya que me ocurria lo mismo, lo resolvi de la siguiente manera dentro de:

function generar_select($cod_provincia)

sustitui

$respuesta = new xajaxResponse('ISO-8859-1');

por la siguiente linea

$respuesta = new xajaxResponse();

y comenzo a mostrar los datos en el segundo combo
si ahi otra forma me gustaria saberlo.

Tambien les basado en este mismo código pero manejando base de datos y (OJO) con las modificaciones para el xaJax 0.5 ya que cambiaron un poco el codigo.

<?php
require('xajax/xajax_core/xajax.inc.php');
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->configure('decodeUTF8Input',true);

function motor()
{
include 'conexion.php';
conectar();
$consulta = mysql_query ("SELECT ID_MOTOR,MOTOR FROM MOTOR");
desconectar();
?>
<select name='motor' id='motor' onChange="xajax_generar_select(document.formulario.motor.options[document.formulario.motor.selectedIndex].value)">";
<option value='0'>Elige</option>
<?
while($registro=mysql_fetch_row($consulta))
{ echo "<option value='".$registro[0]."'>".$registro[1]."</option>"; }
?> </select>
<?
}

function select_combinado($id_motor){
include 'conexion.php';
conectar();
$consulta_mod=mysql_query("SELECT ID_MOD_MOTOR,MODELO_MOTOR FROM MODELO_MOTOR WHERE ID_MOTOR='$id_motor'");
desconectar();

$nuevo_select = "<select name='modelos'>";
$nuevo_select .= '<option value="'. 0 .'">'.Elige.'</option>';
while($registro_mod=mysql_fetch_row($consulta_mod)){
$nuevo_select .= '<option value="' . $registro_mod[0] . '">' . $registro_mod[1] . '</option>';
}
$nuevo_select .= "</select>";
return $nuevo_select;
}

function generar_select($cod_motor){

$respuesta = new xajaxResponse();

if ($cod_motor==0){
$nuevo_select = '<select name="modelos">
<option value=0>Elige Modelo</option>
</select>
';
}else{
$nuevo_select = select_combinado($cod_motor);
}

$respuesta->assign("seleccombinado","innerHTML",$nuevo_select);


return $respuesta;
}


$xajax->registerFunction("generar_select");


$xajax->processRequest();
?>

<html>
<head>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">
<title>Select Dimamicos con XAJAX</title>
<?
//En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
$xajax->printJavascript("xajax/");
?>
</head>

<body>

<form name="formulario">
Motor:
<br>
<? motor(); ?>
<br>
<br>
Modelos: <div id="seleccombinado">
<select name="modelos">
<option value=0>Elegir motor</option>
</select>
</div>
</form>
</body>
</html>

cachi

12/11/2007
hola, estoy intentando usar este codigo para mi pagina pero no hay forma de que ande. ninguno de los 2 codigos, ni el simple ni el que busca los datos en la base. tenes idea si puede estar relacionado con alguna limitacion de mi servidor? el mismo tiene corriendo apache.
saludos y gracias.

Alonso

12/12/2007
hola muy bueno el articulo, aunque valdria la pena una actualizada, ya que como dijo Gil, el codigo de esta libreria ha cambiado, con el codigo de Gil si me funciona, pero tengo una duda, solo me funciona de manera local !!, cuando lo pongo en el servidor solo lee el primer select de la BD, el segundo no se carga :S

Dani

28/12/2007
Pues sí, seria recomendable un ejemplo con bases de datos que funcionase porque no consigo hacer funcionar el segundo select (ni con el ejemplo que ha puesto Gil ni con uno hecho por mi)

Ricardo

10/1/2008
Muy buen tuttorial para los que nos iniciamos en ajax descargue la version del ejemplo y al querer modificarla para que la informacion la saque de una base de datos al elegir en primer combo si merefresca el siguiente pero extrañamente solo pone la primera opcion siendo que existen mas y solo funciona con el id inpar donde puedo postear el codigo para saber si estoy haciendo algo mal

sobrao

22/2/2008
saludos, ejecute este mismo con una modificaciones, y funciono pero en explorer pero en mozilla no me registra el dato seleccionado, cualquier ayuda para solucionarlo o porque sucede esto.
<?php
require('xajax/xajax_core/xajax.inc.php');
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->configure('decodeUTF8Input',true);

function motor()
{
include 'conexion.php';
conectar();
$consulta = mysql_query ("SELECT ID_MOTOR,MOTOR FROM MOTOR");
desconectar();
?>
<select name='motor' id='motor' onChange="xajax_generar_select(document.formulario.motor.options[document.formulario.motor.selectedIndex].value)">";
<option value='0'>Elige</option>
<?
while($registro=mysql_fetch_row($consulta))
{ echo "<option value='".$registro[0]."'>".$registro[1]."</option>"; }
?> </select>
<?
}

function select_combinado($id_motor){
include 'conexion.php';
conectar();
$consulta_mod=mysql_query("SELECT ID_MOD_MOTOR,MODELO_MOTOR FROM MODELO_MOTOR WHERE ID_MOTOR='$id_motor'");
desconectar();

$nuevo_select = "<select name='modelos'>";
$nuevo_select .= '<option value="'. 0 .'">'.Elige.'</option>';
while($registro_mod=mysql_fetch_row($consulta_mod)){
$nuevo_select .= '<option value="' . $registro_mod[0] . '">' . $registro_mod[1] . '</option>';
}
$nuevo_select .= "</select>";
return $nuevo_select;
}

function generar_select($cod_motor){

$respuesta = new xajaxResponse();

if ($cod_motor==0){
$nuevo_select = '<select name="modelos">
<option value=0>Elige Modelo</option>
</select>
';
}else{
$nuevo_select = select_combinado($cod_motor);
}

$respuesta->assign("seleccombinado","innerHTML",$nuevo_select);


return $respuesta;
}


$xajax->registerFunction("generar_select");


$xajax->processRequest();
?>

<html>
<head>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">
<title>Select Dimamicos con XAJAX</title>
<?
//En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
$xajax->printJavascript("xajax/");
?>
</head>

<body>

<form name="formulario">
Motor:
<br>
<? motor(); ?>
<br>
<br>
Modelos: <div id="seleccombinado">
<select name="modelos">
<option value=0>Elegir motor</option>
</select>
</div>
</form>
</body>
</html>

marino_angeles

09/7/2009
alguien tiene un Select con 3 combos dependientes
Excelente tutorial de xajax, he probado este tip de select con los 2 select combinados, pero quisiera saber si alguien trabajo para 3 select combinados. He intentado hacerlo pero solo funcionan los 2 primeros select, el tercero no se actualiza...

Vicente

31/7/2009
Muy bueno estas enseñansas de xajax Gracias
Bueno realmente me ha servido de mucho estos tutoriales que publican, gracias a ellos termine mi proyecto de pasantia de ingenieria de sistemas la pagina es http://www.ccvs.com.ve, validaciones, select combinados, capcha, gracias a estos codigos que publican aprendi xajax gracias a Dios porque los usa de buena manera siga asi!................

Miguel Pacheco

17/8/2009
Ayuda con error
Hola a todos:

He tratado de implementar ese script pero me sale el siguiente error:

"Fatal error: Call to undefined method xajax::DecodeUTF8InputOn() in /home/amppro/public_html/Untitled-1.php on line 8"

Soy nuevo en el uso de ajax y no se como enfrentar el error, alguien me puede ayudar???

Saludos y gracias de antemano

candy_rondon

30/8/2009
Cambia esa linea de codigo por esta
$xajax->configure('decodeUTF8Input',true);

aliza

17/12/2009
Fabuloso
Grandísima aportación

santiago_sandoval

18/12/2009
AYUDA amigos
Hola chicos, excelente el tutorial. Les cuento que realice el Select Combinado cargando las Listas con datos de una Base de Datos y funciono sin ningun problema. Ahora viene mi aporte, en la segunda Lista(Select) trate de aplicar xajax para que seleccionando una opcion actualizara algun Div para que mostrara datos relacionados con la opcion elegida del 2º select. No logro hacerlo funcionar. La prox. vez voy a subir el codigo para que alguien encuentre el error. Exitos

Eleanny2001

20/5/2010
ayuda
alguien me podr?ayudar con select combinados de 3 niveles hecho con xajax... es que estoy tratando de hacerlo y solo me muestra dos select y el tercero no.. estoy trabajando con base de datos mysql.

sergioooo

17/6/2010
como con una base de datos
como puedo realizar lo mismo pero conectandome a una base de datos extrayendo los datos de la provincia y de la poblacion de una base de datos

Sebastian

30/7/2010
Problema Internet Explorer
Buenos días a todos, gran tutorial, lo he usado y modificado un poco, quería saber si alguno de ustedes ha tenido algún problema para usar el código tal cual como esta en Internet Explorer, de ser así como lo han solucionado ?

En el body tengo este fragmento de codigo


<?php
echo "<select name='ruta' onchange='xajax_saludo(document.formulario1.ruta.options[document.formulario1.ruta.selectedIndex].value,1)'>
<option value='9999'>Selecciona Nombre Ruta</option>";
$i = 1;
while ($row=mysql_fetch_array($result))
{
$nombre_ruta = $row["nombre_ruta"];
echo '<option>'.$nombre_ruta.'</option>';
}
echo'</select>';
?>

la función saludo (), recibe $nombre_ruta y el numero "1", pero cuando la función imprime no puede imprimir $nombre_ruta, en firefox y en chrome no hay ningún problema.
Gracias de antemano

Sergio

01/2/2011
No logro que el onchange llame la funcion xajax_generar_select
Hola muy bueno este ejemplo, pero tengo un pequeño problema no logro que el onchange me llame la funcion xajax_generar_select.

estoy trabajando con una base de datos en mysql donde el primer select lo logro llenar pero veo que no llama la funcion xajax_generar_select cuando selecciono un item del select.

Muchas Gracias

cybersoul

03/6/2011
tunning Ajax
Hola a todos, por experiencia personal quería agregar un tip a este tema. para crear el Select interactivo no necesitan meterlo en un DIV id=xxx solo hacen esto:

<form name="formulario">
Provincia:
<br>
<select name="provincia" onchange="xajax_generar_select(document.formulario.provincia.options[document.formulario.provincia.selectedIndex].value)">
<option value="999">Selecciona provincia</option>
<option value=0>Madrid</option>
<option value=1>Valencia</option>
<option value=2>Barcelona</option>
<option value=3>León</option>
</select>
<br>
<br>
Población:
// le colocan un ID al select
<select name="poblaciones" id="poblaciones">
<option value=0>Elegir provincia</option>
</select>

</form>

***********************************************************
En nuestra funcion AJAX, ya no escribimos <Select de nuevo>

function generar_select($cod_provincia){
//instanciamos el objeto para generar la respuesta con ajax
$respuesta = new xajaxResponse('ISO-8859-1');

if ($cod_provincia==999){
//escribimos el select de poblaciones vacío
$nuevo_select = '<option value=0>Elegir provincia</option>';
}else{
$nuevo_select = select_combinado($cod_provincia);
}

//escribimos en el propio SELECT con su id="poblaciones"
$respuesta->addAssign("poblaciones","innerHTML",$nuevo_select);


//tenemos que devolver la instancia del objeto xajaxResponse
return $respuesta;
}


function select_combinado($id_provincia){
//función para crear el select combinado
//debe extraer las opciones de un select a partir de un parámetro

//generamos unos arrays con distintas poblaciones de varias provincias
//estos valores en un caso práctico seguramente se extraerán de base de datos
//no habría que cargar todos en memoria, sólo hacer el select de las poblaciones de la provincia deseada
$madrid = array("Madrid", "Las Rozas", "Móstoles", "San Sebastián de los Reyes");
$valencia = array("Valencia", "La Eliana", "Paterna", "Cullera");
$barcelona = array("Barcelona", "Badalona");
$leon = array ("León", "Astorga", "Villamejil");
$poblaciones = array($madrid, $valencia, $barcelona, $leon);


for ($i=0; $i<count($poblaciones[$id_provincia]); $i++){
$nuevo_select .= '<option value="' . $i . '">' . $poblaciones[$id_provincia][$i] . '</option>';
}
return $nuevo_select;
}


Eso es todo, no necesito reescribir los SELECT y pasarlos por las instancias, solo los OPTION, ni tampoco necesito un DIV u otro objeto...

El innerHTML trabaja sobre el control SELECT

Saludos.

paola

19/6/2011
selects anidados en php
hola vi el ejemplo y funciona re lindo, me podes pasar para descargar el codigo y la base de datos??, gracias.

Dianilla

03/10/2011
Hola!!
Tu articulo esta muy bueno, me gustaria preguntar si alguien sabe como hacer que despues de seleccionar los valores como se podria poner otro onChange con el ultimo select para mostrar una caja de texto. Es que ya lo intente todo y no me funciona

Cordial saludo,

diego

12/7/2012
enviar datos
buenas... puse en practica el ejemplo y le agregue un boton para enviar pero no logro que los datos los envie ni por metodo GET ni POST para que luego sean utilizados por otra pagina para interactuar... me pueden ayudar con esto???<br />
gracias!<br />
sdos

miaweb

17/8/2012
Ok...
quien me puede ayudar$ a resolver esta solución ya mismo. Quiero hacer un buscador de viajes local. 12 localidades de ide y 12 de vuelta y mostrar diferentes horarios. chatonline@hotmail.com.ar simple/ en ayax,

SnoopyX

11/2/2013
No me funciona el xajax en php
Hola, soy nuevo en esto, hace unas semanas vengo practicando PHP y quiero agregar los selct combinados y busquedas dinámicas a mi proyecto, es xajax una buena alternativa para esto?
Estube tratando de implementar este ejemplo pero con xajax 0.6, ya hice las actualizaciones indicadas en otro articulo al xajax 0.5 pero al abrir la pagina me da el siguiente error:

"Fatal error: Call to undefined method xajax::setCharEncoding() in ...

luego, comentando esta línea e da este otro error:

Error: the xajax Javascript component could not be incjuded. Perhaps the URL is incorrect? URL: xajax_js/xajax_core.js

Alguien me puede orientar a que se debe este problema, estuve buscando en los foros y no encontré ayuda.

Gabriel

18/2/2013
Mi aportacion, simplificar un poquito el codigo
Saludos a todos, este manual esta excelente, me ha estado sirviendo bastante y, aunque la verdad si nos ahorra algo de programacion en javascript, yo les recomiendo tratar de profundizar mas en AJAX porque es mejor conocer las herramientas lo mejor posible.

Con respecto a mi aportacion, en el select "provincias" del formulario, en el evento onchange asi me ha funcionado a mi:
<select name="provincias"
onchange="xajax_generar_select(this.options[this.selectedIndex].value)">

Matías

19/6/2013
Combinar select multiple
¿Cómo hago para combinar dos select multiples?
Yo tengo que elegir varias carreras en una universidad y que se muestren sus planes en otro select

leon

21/4/2014
que nombre lleva el segundo codigo
que tal disculpen mi ignoracia pero que nombre el ponen al segundo codigo en donde van las funciones y los arreglos¡¡ es que soy nuevo en php y logico mas nuevo en ajax¡¡¡¡
saludos¡¡