No sé por qué es, estoy cansado de modificar cosas pero no sé qué es lo que falla porque yo le doy al select y no hace nada, no se carga el 2º select; el código es:
Using php Syntax Highlighting
<?
//incluímos la clase ajax
require ('../xajax_core/xajax.inc.php');
//instanciamos el objeto de la clase xajax
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
//$xajax->configure('javascript URI', '../');
//$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->processRequest();
?>
//incluímos la clase ajax
require ('../xajax_core/xajax.inc.php');
//instanciamos el objeto de la clase xajax
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
//$xajax->configure('javascript URI', '../');
//$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->processRequest();
?>
Coloreado en 0.023 segundos, usando GeSHi 1.0.8.4
- <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/");
- $xajax->printJavascript("../");
- // $xajax->printJavascript();
- ?>
- </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>
Y a mí me da que el error puede estar en la línea donde dice $xajax->printJavascript("../"); aunque ya he probado varias alternativas y ninguna me funciona. La ruta relativa de los scripts creo que está bien, pues mi árbol de carpetas es:
- Código: Seleccionar todo
Server-web-XAJAX- y aquí tengo descomprimido todo el contenido de la carpeta xajax
Dentro de XAJAX tengo lo siguiente:
XAJAX-examples-select.php (este es el script que no me funciona, contiene el código anterior)
XAJAX-xajax_controls
XAJAX-xajax_core
XAJAX-xajax_js
XAJAX-xajax_plugins
Dentro de aquí, el script que estoy ejecutando lo tengo dentro de la carpeta examples, que es donde está el helloWorld que me funciona, y he puesto las rutas relativas igual, así que deberían estar bien.
SI me pudierais echar una mano, gracias.