Oka....
te paso el codigo completo...
Código HTML:
<script type="text/javascript" language="JavaScript1.2">
var url_carga_segundo_combo = "accion_carga_segundo_combo.php?id=";
var http = getHTTPObject(); // We create the HTTP Object
//---------------------------------------------------
//-- Genera xmlHttpRequest
//---------------------------------------------------
function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}
//------------------------------ on change del 1er combo
function onChange_primer_combo() {
// obtenemos el id seleccionado del 1er combo
var selObj = document.getElementById('cbx_primero');
var selIndex = selObj.selectedIndex;
var v_id = selObj.options[selIndex].value;
// blanquemos el 2do combo
document.getElementById('cbx_segundo').options.len gth = 0;
http.open("GET", url_carga_segundo_combo + escape(v_id) , true);
http.onreadystatechange = handleHttpResponse_onChange_primer_combo;
http.send(null);
}
// y por ultimo publicamos los resultados
//*---------------------------------------------------------------
//-- Publica Combo PERFIL segun seleccion Combo ANCHOS - PASO II
//----------------------------------------------------------------
function handleHttpResponse_onChange_Combo_Ancho() {
if (http.readyState == 4) {
var i;
var total = http.responseXML.getElementsByTagName('LINEA').len gth;
results = http.responseText.split(",");
for(i=0;i<total;i++){
document.getElementById('cbx_segundo').options[i+1]= new Option( http.responseXML.getElementsByTagName('COL1')[i].firstChild.data ,http.responseXML.getElementsByTagName('COL2')[i].firstChild.data);
}
window.status = '';
return false;
}
}
</script>
Bien hasta aqui seria todo tu codigo javascript necesario Ahora como ultimo vamos con el php...
Creas un php con el nombre accion_carga_segundo_combo.php
este archivo va a publicar un XML por lo tanto debe llevar los tags de xml para identificarlo como tal. Va el codigo.
Código PHP:
<?php
header('Content-Type: text/xml');
header ("Expires: Fri, 14 Mar 1980 20:53:00 GMT"); //la pagina expira en fecha pasada
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //ultima actualizacion ahora cuando la cargamos
header ("Cache-Control: no-cache, must-revalidate"); //no guardar en CACHE
header ("Pragma: no-cache");
$host = "host";
$user = "usuario";
$password = "password";
$db = "base_de_datos";
$link = mysql_connect($host, $user, $password);
mysql_select_db($db,$link);
$sql = "SELECT * FROM medida_perfil ";
$sql .= " WHERE campo_en_relacion_con_primer_combo = '$id' ";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
$string = '';
$string = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
$string .= "<MARCAS>\n";
while ($row = mysql_fetch_assoc($result)){
$string .= "<LINEA>\n";
$string .= "<COL1>".$row[id_segundo_combo]."</COL1>\n";
$string .= "<COL2>".$row[descripcion]."</COL2>\n";
$string .= "</LINEA>\n";
}
$string .= "</MARCAS>\n";
echo $string;
}
?>
LISTO... de esta forma debe funcionar sin problemas....
PD: perdon por el encolumnamiento.
salu2