por favor ayudenme alguien que se pa de Xajax por favor
tengo este codigo para poder tener un combox dependiente de
Ciudad -> Comuna -> Barrio
me carga el primer combo pero a la hora de pasar a la funcion busca_comuna no me carga nada
gracias por todos sus aportes ....
Código PHP:
Ver original<?php
require_once("conexion.php");//incluimos los archivos de conexion
@require_once("xajax/xajax_core/xajax.inc.php");
$xajax = new xajax();
$xajax->configure('javascript URI','xajax');
////Definimos las opciones por fecto. éstas pueden tomarse de $_POST, $_GET, $_SESSION, base de datos o lo que se requiera
$ciudad_sel='';
$comuna_sel='';
$barrio_sel='';
function busca_comuna($ciudad,$sel=''){//definimos la funcion que dado un ciudad busca los municipios
$comuna=mysql_query("select distinct comuna from barrios where ciudad='$ciudad'");//buscamos las comunas de la ciudad indicada $js="
var sel=document.getElementById('comuna');//tomamos el select
sel.length=1;//En caso de tener opciones lo 'vaciamos', dejando solo la primera ";
$x=1;
$js.="
sel.length++;//agregamos una nueva opcion
sel.options[$x].value='$m[comuna]';//Indicamos el valor puede ser diferente al texto
sel.options[$x].text='$m[comuna]';";
if($m['comuna']==$sel)//si el municipio es la opcion por defecto
$js.="sel.options[$x].selected=true;";//indicamos que quede seleccionado
$x++;
}
$respuesta= new xajaxResponse();//creamos una respuesta tipo xajax
$respuesta->script($js);//asignamos el script js a la respuesta
return $respuesta; //respondemos el resultado
}
function busca_barrio($ciudad,$comuna,$sel=''){//definimos la funcion que dado un ciudad y municipio busca las colonias
$barrio=mysql_query("select distinct barrio from barrios where ciudad='$ciudad' and comuna='$comuna'");//ahora buscamos las colonias del ciudad y municipio $js="
var sel=document.getElementById('barrio');//tomamos el select
sel.length=1;//En caso de tener opciones lo 'vaciamos', dejando solo la primera ";
$x=1;
$js.="
sel.length++;//agregamos una nueva opcion
sel.options[$x].value='$c[barrio]';
sel.options[$x].text='$c[barrio]';";
if($c['barrio']==$sel)//si la colonia es la opcion por defecto
$js.="sel.options[$x].selected=true;";//indicamos que quede seleccionada
$x++;
}
$respuesta= new xajaxResponse();//creamos una respuesta tipo xajax
$respuesta->script($js);//asignamos el script js a la respuesta
return $respuesta; //respondemos el resultado
}
$xajax->registerFunction("busca_comuna");//registramos nuestras funciones php para que se puedan llamar via ajax
$xajax->registerFunction("busca_barrio");
$xajax->processRequest();//Indicamos a xajax que procese las respuestas.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html>
<head>
<?php $xajax->printJavascript();?>
</head>
<body>
<select name="ciudad" id="ciudad" onchange="xajax_busca_comuna(this.value,'<?php echo $comuna_sel?>');"><!-- Al cambiar, llamara la funcion que buscara los municipios del ciudad selecionado, pasando ademas el municipio por defecto si lo hubiera-->
<option value="">----- SELECCIONE LA CIUDAD -----</option>
<?php
$ciudad=mysql_query("select distinct ciudad from barrios order by ciudad");//distinct para obtener los ciudades sin repetirse echo "<option value=\"$p[ciudad]\" ";
if($p['ciudad']==$ciudad_sel)//$ciudad_sel seria la opción por defecto, puede ser obtenida por post, sesion, bd etc.
echo 'selected';
echo ">$p[ciudad]</option>";
}
?>
</select>
<select name="comuna" id="comuna" onchange="xajax_busca_barrio(document.getElementById('ciudad').value,this.value,'<?php echo $barrio_sel?>');"><!-- Ahora pasamos dos parametros, el ciudad y la colonia seleccionada-->
<option value="">-- SELECCIONE LA COMUNA ----</option>
</select>
<select name="barrio" id="barrio">
<option value="">----- SELECCIONE EL BARRIO -----</option>
</select>
</body>
</html>