22/07/2008, 09:13
|
| | Fecha de Ingreso: junio-2008
Mensajes: 4
Antigüedad: 16 años, 6 meses Puntos: 0 | |
Recargar Combo Buenas tengo un problema con la recarga de este codigo y ya no se me ocurre que hacer. La idea es que cuando elijo la provincia, el otro combo se recargue con las localidades, esto lo hace cuando inicio la pagina sin problema, pero si elijo otra provincia se carga esa provincia con sus localidad mas las localidades de la seleccion anterior . Me fije en el firebug y la respuesta son los datos solicitados, pero el que no se modifica es html, es como que lo agrega .... les dejo el codigo (ademas le puede servir a alguien)
principal.php
<p>
<select name="provincia" id="combo1" onchange="carga(this.value)">
<option selected value = "0">--------- Elija Provincia ---------</option>
<?
$provincia = $db->consulta("select id_provincia, provincia from aux_provincia order by provincia");
while ($prov = mysql_fetch_array($provincia)) {
echo "<OPTION value = $prov[id_provincia] > $prov[provincia] </option>";
}
?>
</SELECT>
<select id="combo2">
<option selected value= "0">--------- Elija Localidad ---------</option>
</select>
</p>
ajax.php
<?php
include ('../includes/funciones.inc.php');
$val = $_POST["val"]; //= 3;
$val= $db->consulta("select id_localidad, localidad from aux_localidad where id_provincia = '$val' order by localidad");
$xml .= '<datos>' ;
while ($valor= mysql_fetch_array($val)) {
$xml .= '<valor>'.$valor[localidad].'</valor>';
}
$xml .= '</datos>';
header('Content-type: text/xml');
echo $xml;
unset($val);
?>
Script.js
// <![CDATA[
function ajaxobj() {
try {
_ajaxobj = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
_ajaxobj = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
_ajaxobj = false;
}
}
if (!_ajaxobj && typeof XMLHttpRequest!='undefined') {
_ajaxobj = new XMLHttpRequest();
}
return _ajaxobj;
}
function carga(val) {
var ajax = ajaxobj();
ajax.open("POST", "ajax.php", true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
var datos = (ajax.responseXML).firstChild;
var obj = document.getElementById("combo2");
for (var i=0; i<obj.options.length; i++) {
obj.removeChild(obj.firstChild);
}
for (var i=0; i<datos.childNodes.length; i++) {
var elem = datos.childNodes[i].firstChild.data;
obj.options[i] = new Option(elem);
}
}
}
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.send("&val="+val);
}
// ]] > |