Home > Foro de Ajax >

Debates de Ajax > Combo dependientes 3 niveles.

Combo dependientes 3 niveles.

Pyrata
Valparaiso, Chile
Escrito por Pyrata el 7 de Enero

Bueno desde ya les comento que no soy muy sabio en lo que respecta a ajax diria que un aprendiz muy basico pero con artas ganas de experimentar.

Bueno ahii vamos estoy tratando de modificar un select dependiente de 3 niveles el problema esta netamente en las funciones de ajax que trato de entenderlas y no me funcionan, les muestro lo que tengo hecho y los script a modificar.

combo1. Php

<? Php
function generaSelect ()
{
include(
"Connections/mi_conexion. Php" );
$conexBD = Conectarse ();
$consulta = mysql_query ( "SELECT * FROM universidades" , $conexBD )or die( mysql_error ());
//desconectar();

// Voy imprimiendo el primer select compuesto por los paises
echo "<select name="select1" id="select1" onChange="cargaContenido(this. Id)">" ;
echo
"<option value="0">Universidad</option>" ;
while(
$registro = mysql_fetch_row ( $consulta ))
{
echo
"<option value="" . $registro [ 0 ]. "">" . $registro [ 1 ]. "</option>" ;
}
echo
"</select>" ;
}
? >
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. 0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. Dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
<script type="text/javascript" src="funciones_select_dependientes_3_niveles. Js"></script>
</head>

<body>

<div id="demo" style="width:600px;">
<div id="demoDer"></div>
<div id="demoMed"></div>
<div id="demoIzq"> <? Php generaSelect (); ? >
<select disabled="disabled" name="select2" id="select2">
<option value="0">Selecciona opci&oacute;n... </option>
</select>
<select disabled="disabled" name="select3" id="select3">
<option value="0">Selecciona opci&oacute;n... </option>
</select>
</div>
</div>

</body>
</html>

Aqui se supone es donde vuelco y lleno con php el primer combo hasta aqui todo bien el tema esta es que al seleccionar un elemento me llama funciones_select_dependientes_3_niveles. Js y en este archivo hay unas funciones que no logro entender porque no me hace nada tampoco me envia algun error.... Les dejo el script.

function nuevoAjax()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2. XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft. XMLHTTP");
}
catch(E)
{
if (! Xmlhttp && typeof XMLHttpRequest! ="undefined") xmlhttp=new XMLHttpRequest();
}
}
return xmlhttp;
}

// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var listadoSelects=new Array();
listadoSelects[0]="select1";
listadoSelects[1]="select2";
listadoSelects[2]="select3";

function buscarEnArray(array, dato)
{
// Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
var x=0;
while(array[x])
{
if(array[x]==dato) return x;
x++;
}
return null;
}

function cargaContenido(idSelectOrigen)
{
// Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
var posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen)+1;
// Obtengo el select que el usuario modifico
var selectOrigen=document. GetElementById(idSelectOrigen);
// Obtengo la opcion que el usuario selecciono
var opcionSeleccionada=selectOrigen. Options[selectOrigen. SelectedIndex]. Value;
// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
if(opcionSeleccionada==0)
{
var x=posicionSelectDestino, selectActual=null;
// Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
while(listadoSelects[x])
{
selectActual=document. GetElementById(listadoSelects[x]);
selectActual. Length=0;

var nuevaOpcion=document. CreateElement("option"); nuevaOpcion. Value=0; nuevaOpcion. InnerHTML="Selecciona Opci&oacute;n... ";
selectActual. AppendChild(nuevaOpcion); selectActual. Disabled=true;
x++;
}
}
// Compruebo que el select modificado no sea el ultimo de la cadena
else if(idSelectOrigen! =listadoSelects[listadoSelects. Length-1])
{
// Obtengo el elemento del select que debo cargar
var idSelectDestino=listadoSelects[posicionSelectDestino];
var selectDestino=document. GetElementById(idSelectDestino);
// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
var ajax=nuevoAjax();
ajax. Open("GET", "combo1. Php? Select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
ajax. Onreadystatechange=function()
{
if (ajax. ReadyState==1)
{
// Mientras carga elimino la opcion "Selecciona Opcion... " y pongo una que dice "Cargando..."
selectDestino. Length=0;
var nuevaOpcion=document. CreateElement("option"); nuevaOpcion. Value=0; nuevaOpcion. InnerHTML="Cargando... ";
selectDestino. AppendChild(nuevaOpcion); selectDestino. Disabled=true;
}
if (ajax. ReadyState==4)
{
selectDestino=parentNode.innerHTML.ajax. ResponseText;
}
}
ajax. Send(null);
}
}

Y aca no entiendo bien, tan solo hice una modificacion que es esta linea.

ajax. Open("GET", "combo1. Php? Select="+idSelectDestino+"&opcion="+op cionSeleccionada, true);

Le agrege combo1. Php tan solo eso.... Pero no me hace nada.

Y REALMENTE NOSE QUE HACER, NO ENTIENDO MUCHO DE ESTO AGRADECERIA CUALQUIER GUIA SUGERENCIA... HE DADO VUELTAS GOOGLE HACIENDO PRUEBAS Y LO QUE MAS HE AVANZADO Y LOGRADO ES ESTO.

BUENO DESDE YA MUCHAS GRACIAS.


Citar  |  
Ver mensaje      

J_orozco
Tabasco, México
Escrito por J_orozco el 3 de Marzo
Hola tu error se puede deber a que tienes espacios en una variable "op cionSeleccionada"

esta es tu linea:
ajax. Open("GET", "combo1. Php? Select="+idSelectDestino+"&opcion="+op cionSeleccionada, true);



solo quita esos espacios:
ajax. Open("GET", "combo1. Php? Select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);

espero eso halla sido la causa
suerte
y buen dia

Citar  |  
Ver mensaje     


Responder


Quiero recibir alertas por email cuando haya mensajes nuevos en este debate

Al escribir en el debate:
  1. Repasa la ortografía y no escribas en formato SMS.
  2. Lee el texto dos veces antes de publicar.
  3. No escribas todo en mayúsculas o negritas.
 
Páginas internacionales: España  |  Italia  |  Francia  |  México  |  Alemania  |  Reino Unido  |  Argentina  |  Chile  |  Colombia  |  USA

Búsquedas frecuentes: como hacer un kimono precios resonancia magnetica dialogos en ingles se puede dar depilacion laser en le barba juego del gato en java

Emagister cumple la Ley Orgánica 15/1999 de 13 de diciembre, de Protección de datos de Carácter Personal, y posee el código de inscripción nº 2002010053 del Registro General de la Agencia de Protección de Datos. Copyright © 1999/2000 - Grupo Intercom - Todos los derechos