Foros del Web » Programando para Internet » ASP Clásico »

combobox dependientes con ajax.

Estas en el tema de combobox dependientes con ajax. en el foro de ASP Clásico en Foros del Web. me pasa exactamente lo mismo...usé alert y viene vacío en Firefox...

  #31 (permalink)  
Antiguo 19/02/2007, 12:39
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 11 meses
Puntos: 6
Re: combobox dependientes con ajax.

me pasa exactamente lo mismo...usé alert y viene vacío en Firefox
  #32 (permalink)  
Antiguo 21/02/2007, 13:24
 
Fecha de Ingreso: febrero-2007
Mensajes: 1
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: combobox dependientes con ajax.

Es buen ejemplo, a todos los que programan web's les sugiero utilizar PHP que es compatible con AJAX y que sin duda hace tu programacion elegante y las paginas mas rapidas.
  #33 (permalink)  
Antiguo 21/02/2007, 13:32
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Re: combobox dependientes con ajax.

Cita:
Iniciado por lex10 Ver Mensaje
Es buen ejemplo, a todos los que programan web's les sugiero utilizar PHP que es compatible con AJAX y que sin duda hace tu programacion elegante y las paginas mas rapidas.
O sea, en otras palabras, Javascript es mas compatible con PHP?
Lo siento, no lo compro...
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #34 (permalink)  
Antiguo 21/02/2007, 14:03
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 9 meses
Puntos: 535
Re: combobox dependientes con ajax.

programacion elegante... ok... en fin...
__________________
...___...
  #35 (permalink)  
Antiguo 23/02/2007, 10:05
Nax
 
Fecha de Ingreso: enero-2002
Ubicación: Euskal Herria
Mensajes: 129
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: combobox dependientes con ajax. SOLUCIONADO

LO HE SOLUCIONADO!!!

Pero creo que me teneis que ayudar a razonarlo...

Yo tenia el formulario maquetado en una tabla y dentro de esta tabla metia el codigo de los combos dependientes (una tabla dentro de otra), cuando he sacado esta segunda tabla de la primera (teniendo asi dos tablas de primer nivel) a funcionado a la perfeccion!!! Puede ser algo del getElementById???

Asi NO funcionaba:

Código:
<table>
<form name="form1" method="post" action="select_dependientes.asp">
<tr>
<td>
<input name="txtHitza" type="text" value="<%=Hitza%>" size="29">
</td>
</tr>
<tr>
<td>	  
<table border="1" width="400" style="border-style:none;">
  <tr>
    <td id="fila_1" width="50%" class="punteado"><% generaPaises() %></td>
	<td id="fila_2" width="50%" class="punteado">
	<select class="combo" disabled="disabled" id="select_1" name="estados">
	<option id="valor_defecto" value="0">Selecciona pais...</option>
	</select>
	</td>
  </tr>
</table>
</td>
</tr>
<tr><td>
<input type="submit" value="Enviar" name="Submit">   
</td></tr>
</form>
</table>
Asi SI funciona:

Código:
<form name="form1" method="post" action="select_dependientes.asp">

<input name="txtHitza" type="text" value="<%=Hitza%>" size="29">
		  
<table border="1" width="400" style="border-style:none;">
  <tr>
    <td id="fila_1" width="50%" class="punteado"><% generaPaises() %></td>
	<td id="fila_2" width="50%" class="punteado">
	<select class="combo" disabled="disabled" id="select_1" name="estados">
	<option id="valor_defecto" value="0">Selecciona pais...</option>
	</select>
	</td>
  </tr>
</table>

<input type="submit" value="Enviar" name="Submit">   
</form>
Creo que me estoy obsesionando...
__________________
SOS Palestina

Última edición por Nax; 23/02/2007 a las 10:15 Razón: Cambiar el titulo
  #36 (permalink)  
Antiguo 26/02/2007, 13:56
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 11 meses
Puntos: 6
Re: combobox dependientes con ajax.

Hola Nax...!

Recien veo esta respuesta...al parecer no me están llegando los correos de notificación de los post en los que participo..asi me pierdo...

Yo tengo todo dentro de una sola tabla e igual no me funciona

Sin embargo, voy a checar bien el código porque pueden haber algunos TR o TD solapados y al parecer al firefox no le gustan...

Gracias,
Luis
  #37 (permalink)  
Antiguo 07/02/2008, 12:04
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 11 meses
Puntos: 6
Re: combobox dependientes con ajax.

Cita:
Iniciado por Al Zuwaga Ver Mensaje
a pues... estuve revisando hace un rato y todo parece ser normal...
tanto:
http://162.122.12.12/registrar_empre...ect_a_cargar=2

como:
http://162.122.12.12/registrar_empre...ect_a_cargar=3

te está devolviendo los datos correctos... el primero se llama select_2 y el segundo select_3... meté un botón en tu página inicial tal que así a ver qué ocurre:

Código:
<input type="button" onclick="alert(document.registro.select_2.value); alert(document.registro.select_3.value);" />
Si te los levanta javascript, te los debería levantar un request.form también
  #38 (permalink)  
Antiguo 07/07/2008, 01:34
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 8 meses
Puntos: 8
Respuesta: combobox dependientes con ajax.

hola yo he probado esto

www.poderlocal.net/ajax/2dependientes/

pero el generador del segundo select esta hecho en asp

pero no funcinoa bien ya que cuando cambio el segundo select me da un error que "comobo" no es un objeto.

la pregunta es podre hacer que cuando se seleccione modelo y marca (he canviado la pais y la provincia por modelo y marca) al hacer submit me pase los valores y recuperarlos con un request form?

gracias


el ajax
Código PHP:
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) { xmlhttp=false; }
 }
 if (!
xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } 
 return 
xmlhttp
}
function 
cargaContenido()
{
 var 
valor=document.getElementById("frm_marca").options[document.getElementById("frm_marca").selectedIndex].value;
 if(
valor==0)
 {
  
// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo todo por defecto
  
combo=document.getElementById("frm_modelo");
  
combo.length=0;
  var 
nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0nuevaOpcion.innerHTML="-- Seleccione modelo --";
  
combo.appendChild(nuevaOpcion); combo.disabled=true;
 }
 else
 {
  
ajax=nuevoAjax();
  
ajax.open("GET""select_2.asp?marca="+valortrue);
  
ajax.onreadystatechange=function() 
  { 
   if (
ajax.readyState==1)
   {
    
// Mientras carga elimino la opcion "Elige pais" y pongo una que dice "Cargando"
    
combo=document.getElementById("frm_modelo");
    
combo.length=0;
    var 
nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0nuevaOpcion.innerHTML="Cargando...";
    
combo.appendChild(nuevaOpcion); combo.disabled=true
   }
   if (
ajax.readyState==4)
   { 
    
document.getElementById("fila_2").innerHTML=ajax.responseText;
   } 
  }
  
ajax.send(null);
 }

el index.asp

Código PHP:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--
#include file="Connections/torello.asp" -->
<%
Dim rs
Dim rs_numRows
Set rs 
Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection MM_torello_STRING
rs
.Source "SELECT * FROM marques ORDER BY marca ASC"
rs.CursorType 0
rs
.CursorLocation 2
rs
.LockType 1
rs
.Open()
rs_numRows 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index
Repeat1__numRows 
= -1
Repeat1__index 
0
rs_numRows 
rs_numRows Repeat1__numRows
%>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- 
saved from url=(0045)http://www.poderlocal.net/ajax/2dependientes/ -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>Prueba</TITLE>
<
META http-equiv=Content-Type content="text/html; charset=iso-8859-1"><LINK 
href
="Prueba_archivos/estilos.css" type=text/css rel=stylesheet><!--[if lte IE 6]>
<
link href="/ajax/estilos_ie6.css" rel="stylesheet" type="text/css" />
<![endif]-->
<
SCRIPT src="arxius/ajax_select.js" type=text/javascript></SCRIPT>
<META content="MSHTML 6.00.6000.16674" name=GENERATOR></HEAD>
<BODY>
<DIV id=contenedor>
<DIV id=cuerpo>
<FORM class=formus id=buscaord name=buscaord action=index.php method=post>
<FIELDSET><LEGEND>Buscar ordenanza</LEGEND>
<LABEL 
for=provincia>Marca</LABEL> <SPAN id=fila_1><SELECT class=campos 
id=frm_marca onchange=cargaContenido() name=frm_marca> <OPTION value="" 
  selected>-- Seleccione --</OPTION>  <% 
While ((Repeat1__numRows <> 0) AND (NOT rs.EOF)) 
marca_ =(rs.Fields.Item("marca").Value)
%>
  <OPTION value="<%=marca_%>"><%=marca_%></OPTION>
  <% 
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  rs.MoveNext()
Wend
%></SELECT></SPAN><BR>
  <LABEL 
for=municipio>Modelo</LABEL> <SPAN id=fila_2><SELECT class=campos 
id=frm_modelo name=frm_modelo> <OPTION value="" selected>-- Seleccione 
  --</OPTION>
 
  </SELECT></SPAN><BR><INPUT id=submit onClick="alert(document.buscaord.frm_marca.value); alert(document.buscaord.frm_modelo.value)" type=submit value=Buscar name=submit> 
</FIELDSET> </FORM>

<br>
<br>
</DIV></DIV>
<br>
</BODY></HTML>
<%
rs.Close()
Set rs = Nothing
%> 
el generador del segundo select

Código PHP:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--
#include file="Connections/torello.asp" -->
<%
Dim rs_sel__MMColParam
rs_sel__MMColParam 
"1"
If (Request.QueryString("marca") <> ""Then 
  rs_sel__MMColParam 
Request.QueryString("marca")
End If
%>
<%
Dim rs_sel
Dim rs_sel_numRows
Set rs_sel 
Server.CreateObject("ADODB.Recordset")
rs_sel.ActiveConnection MM_torello_STRING
rs_sel
.Source "SELECT * FROM models WHERE marca = '" Replace(rs_sel__MMColParam"'""''") + "'"
rs_sel.CursorType 0
rs_sel
.CursorLocation 2
rs_sel
.LockType 1
rs_sel
.Open()
rs_sel_numRows 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index
Repeat1__numRows 
= -1
Repeat1__index 
0
rs_sel_numRows 
rs_sel_numRows Repeat1__numRows
%>
<
SELECT class=campos 
id
=frm_modelo  name=frm_modelo> <% 
While ((
Repeat1__numRows <> 0) AND (NOT rs_sel.EOF)) 
model_ =(rs_sel.Fields.Item("model").Value)
%>
  <
OPTION value="<%=model_%>"><%=model_%></OPTION>
  <% 
  
Repeat1__index=Repeat1__index+1
  Repeat1__numRows
=Repeat1__numRows-1
  rs_sel
.MoveNext()
Wend
%></SELECT><%
rs_sel.Close()
Set rs_sel Nothing
%> 
  #39 (permalink)  
Antiguo 24/07/2008, 13:47
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
3 combos dependientes ajax + asp

Hola
alguien sabe donde puedo descargar un codigo para 3 combos dependientes en ajax?
tal como este pero en ASP
http://www.formatoweb.com.ar/ajax/se..._3_niveles.php

gracias..
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #40 (permalink)  
Antiguo 25/07/2008, 07:19
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 10 meses
Puntos: 7
Respuesta: 3 combos dependientes ajax + asp

Echale un vistazo al trabajo de nuestro amigo Al Zuwaga y sigue el hilo completo.

http://www.forosdelweb.com/f15/combo...4/#post1878212



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #41 (permalink)  
Antiguo 04/08/2008, 13:52
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: 3 combos dependientes ajax + asp

Hola a todos
a mi me funciono ya perfectamente.. claro ke solo necesito ke me funcione en IE ya ke es para una intranet..
pero me surgio algo adicional..
yo lo uso para lo siguiente
3 combos dependientes asi:
Producto>Fragancias>Presentacion..

pero ahora el cliente me dice ke cuando coloque la presentacion que automaticamente me llene un campo de texto con su precio..

el problema es ke cuando selecciono la presentacion el value ke trae es de la presentacion no del precio..
alguien sabe como hacer ke despues de estos 3 combos dependientes me llene un cuarto elemento ke seria un campo de texto con el valor?

gracias.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #42 (permalink)  
Antiguo 04/08/2008, 14:06
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: combobox dependientes con ajax.

Hola a todos
a mi me funciono ya perfectamente.. claro ke solo necesito ke me funcione en IE ya ke es para una intranet..
pero me surgio algo adicional..
yo lo uso para lo siguiente
3 combos dependientes asi:
Producto>Fragancias>Presentacion..

pero ahora el cliente me dice ke cuando coloque la presentacion que automaticamente me llene un campo de texto con su precio..

el problema es ke cuando selecciono la presentacion el value ke trae es de la presentacion no del precio..
alguien sabe como hacer ke despues de estos 3 combos dependientes me llene un cuarto elemento ke seria un campo de texto con el valor?

gracias.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #43 (permalink)  
Antiguo 06/08/2008, 07:23
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: 3 combos dependientes ajax + asp

No he visto el código de la liga que utilizaste, pero deduzco que en alguna página ASP llamada con Ajax "pinta" el <SELECT> en alguna capa de la página principal, bueno, agrega el código para que también llene un campo TEXT con el valor de ese precio que obtienes en tu llamada del primer combo, en esencia es exactamente lo mismo que lo que ya tienes, solo colocar una linea más de código.

Saludos
  #44 (permalink)  
Antiguo 06/08/2008, 07:26
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: 3 combos dependientes ajax + asp

el problema es le en el tercer codigo solo me llega un id.. y la verdad para poder sacar el valor que necesito en el text.
tiene que ser tres AND los cuales nunca llegan.. osea el del primer select, segundo select y tercer select de acuerdo a esto saco el precio del producto en pantalla. todo esto con ajax.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #45 (permalink)  
Antiguo 10/08/2008, 15:48
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: combobox dependientes con ajax.

alquien tiene alguna idea de como pueda solucionar esta inquietud?

grcias..
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #46 (permalink)  
Antiguo 11/08/2008, 07:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: 3 combos dependientes ajax + asp

Cita:
Iniciado por lexus Ver Mensaje
el problema es le en el tercer codigo solo me llega un id.. y la verdad para poder sacar el valor que necesito en el text.
tiene que ser tres AND los cuales nunca llegan.. osea el del primer select, segundo select y tercer select de acuerdo a esto saco el precio del producto en pantalla. todo esto con ajax.
Lexus, no entendí nada de esta última intervención , así que volvamos a referirnos a la última corrida que funcionó:

Cita:
yo lo uso para lo siguiente
3 combos dependientes asi:
Producto>Fragancias>Presentacion..

pero ahora el cliente me dice ke cuando coloque la presentacion que automaticamente me llene un campo de texto con su precio..

el problema es ke cuando selecciono la presentacion el value ke trae es de la presentacion no del precio..
alguien sabe como hacer ke despues de estos 3 combos dependientes me llene un cuarto elemento ke seria un campo de texto con el valor?
Y ahora te explico lo que te sugerí con más detalle:

- Supongo que tienes alguna página ASP que es la que llamas con Ajax cada vez que se ejecuta el evento onChange de los selects ¿no es así?, y en esa página supongo tienes algún condicional para saber cuál de los combos es el que vas a llenar; bueno entonces cuando llenes el tercer combo (el de presentación) vas a ir a la tabla donde recorrerás cada registro con su ID, Descripción y ahora Precio; ahora tienes dos sopas:
1) Llenas el value del tercer combo con algo como
<option value="<%=rs("ID")%>|<%=rs("Precio")%>"> y agregas un evento OnChange() en el select que pase a un par de campos ocultos o variables el resultado del SPLIT del value conforme el caracter pipe. Así al seleccionar algo el usuario en el segundo select se generará un tercer select preparado para proporcionar el ID y Precio del elemento que escoja.

No se si ahora me haya dado a entender.

Saludos
  #47 (permalink)  
Antiguo 11/08/2008, 08:44
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: combobox dependientes con ajax.

ok ya entendi un poco mas lo que me tratas de decir.
el evento onchange() lo pongo en mi tercer combo o sea en el de Presentacion hasta ahi bien..

lo que no sabria que hacer es como pasarle solamente el precio a la funcion javascript para ke me llene el campo de texto

aqui te pego una parte del codigo donde se manejan los combos dependientes

lo que esta en rojo es la parte del combo de presentacion y el cambio que me sugeriste pero al cargar el campo de texto me dice [object]

Código:
 
dim cod_a_buscar, select_a_cargar
cod_a_buscar    = Request.QueryString("seleccionado")
select_a_cargar = request.QueryString("select_a_cargar")

select case select_a_cargar
case 2 ' busco el estado
   
    Dim sql2, rs2
 sql2 = "SELECT distinct(items.id_fragancia), items.id_producto as id_producto, items.id_fragancia as id_fragancia, fragancias.fragancia as fragancia, fragancias.id FROM items, fragancias where items.id_producto = "&cod_a_buscar&"  and fragancias.id=items.id_fragancia ORDER BY fragancias.fragancia ASC"
 Set rs2 = Server.CreateObject("ADODB.Recordset")
 rs2.Open sql2, conx_bd("fullclean_bodega"), 3, 3
 
   response.Write "<select class='combo' id='select_"&select_a_Cargar&"' name='select_"&select_a_Cargar&"' onChange='cargaContenido(3)'>"  
   response.Write "<option value='-2'>Seleccionar Fragancia</option>"
   While Not Rs2.EOF
  ' Imprimo las opciones del select
    response.Write "<option value=""" & Rs2("id_fragancia") & """>" & Server.HtmlEncode(Rs2("fragancia")) & "</option>"
    Rs2.MoveNext
   Wend
   rs2.close
   set rs2 = nothing
   response.Write "</select>"
case 3 'busco las poblaciones del estado
   
Dim sql3, rs3
 sql3 = "SELECT items.id_fragancia AS id_fragancia,items.precio_tm AS precio,  items.id_presentacion AS id_presentacion, presentaciones.presentacion AS presentacion FROM items, presentaciones where id_fragancia = "&cod_a_buscar&" and presentaciones.id = items.id_presentacion ORDER BY presentaciones.presentacion ASC"
 Set rs3 = Server.CreateObject("ADODB.Recordset")
 rs3.Open sql3, conx_bd("fullclean_bodega"), 3, 3
 
   response.Write "<select class='combo' id='select_"&select_a_Cargar&"' name='select_"&select_a_Cargar&"' onChange='cargaPrecio(this);'>"
   response.Write "<option value='-2'>Seleccionar Presentaci&oacute;n</option>"
   While Not Rs3.EOF
 ' Imprimo las opciones del select
  response.Write "<option value=""" &Rs3("precio")&"|"& Rs3("id_presentacion") & """>" & Server.HtmlEncode(Rs3("presentacion")) & "</option>"
  Rs3.MoveNext
   Wend
   rs3.close
   set rs3 = nothing
  response.Write "</select>"
   
end select

y esto fue lo que hice en la funcion javascript para llenar el campo de texto.

Código:
 
function cargaPrecio(valor)
{
document.form1.precio_unitario.value = valor;
}

lo que no se hacer es como mandarle en el onChange solo el precio.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #48 (permalink)  
Antiguo 11/08/2008, 11:22
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: combobox dependientes con ajax.

Hola Lexus

Ya casi lo tienes, solo falta pulir la función cargaPrecio(). Mira este ejemplo, es lo que necesitas, solo ahora debes adecuarlo a lo que tienes:
Código:
<html>
<head>
<title>Page title</title>
<script>
function cargaPrecio()
{
   cadena = document.getElementById('select_3').options[document.getElementById('select_3').selectedIndex].value
   var vec = cadena.split("|");
   document.form1.precio_unitario.value = vec[0];
   document.form1.ID.value = vec[1];
}


</script>
</head>
<body>
<form name="form1">
<select class='combo' id='select_3' name='select_3' onChange='cargaPrecio();'>
<option value="1.1245|ID01">Este es el ID 001</option>
<option value="0.3445|ID02">Este es el ID 002</option>
<option value="12.4147|ID03">Este es el ID 003</option>
<option value="10.9999|ID04">Este es el ID 004</option>
</select>
Precio <input type="text" value="" name="precio_unitario">
ID <input type="text" value="" name="ID"><br>
<form1>
<script>cargaPrecio();</script>
</body>
</html>
Como puedes ver, en la función javascript se separa el precio del ID y se colocan en los controles que ocupas. Ajax no tuvo nada que ver para esto salvo en preparar al tercer combo para que reaccione de esta forma.

Nota la llamada a la función que tengo al final del ejemplo, es para que los controles tengan datos de forma inicial, eso ya depende de tu diseño, si tienes el control de precio dentro de la capa que se actualiza en el ASP llamado por Ajax, no ocupas más que colocar un value con el valor del precio del primer registro.

Saludos
  #49 (permalink)  
Antiguo 11/08/2008, 12:11
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: combobox dependientes con ajax.

excelente.. muchas gracias..
ya quedo perfecto..
gracias por la colaboracion..


saludos.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #50 (permalink)  
Antiguo 28/03/2009, 13:24
 
Fecha de Ingreso: marzo-2009
Mensajes: 13
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Re: combobox dependientes con ajax.

Hola Luis veo que tu ya pudiste implementar a la perfecciòn el combobox en tu formulario de inscripciòn y quiero hacerte una pregunta tècnica.

yo tambièn estoy intentando aprender a usar este recurso en php (el original) pero al subir los documentos a mi servidor pero me manda el siguiente error.

Cita:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in /home/emerznet/public_html/demo/combobox/conexion.php on line 4

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'emerznet'@'localhost' (using password: NO) in /home/emerznet/public_html/demo/combobox/conexion.php on line 5

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/emerznet/public_html/demo/combobox/conexion.php on line 5

Warning: mysql_query() [function.mysql-query]: Access denied for user 'emerznet'@'localhost' (using password: NO) in /home/emerznet/public_html/demo/combobox/select_dependientes.php on line 6

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/emerznet/public_html/demo/combobox/select_dependientes.php on line 6

Warning: mysql_close(): no MySQL-Link resource supplied in /home/emerznet/public_html/demo/combobox/conexion.php on line 10
ya revise conexion.php pero la verdad es que soy novato para esto de conexiones a db y otra cosa, estuve viendo tu formulario pero ¿como seria si en vez de enviar los datos a travez de un formulario, el combobox dependiente te dirija a un nuevo documento?

hay una forma para combobox , es:

<script>
//declarando una funcion
function nav(value) {
if (value != "") { location.href = value; }
}
</script>
</head>
<body>
<form>
<select onChange=nav(this.value) name=combo>
<!-- y llamandola en el select -->
<OPTION value="otro-sitio.php">opcion</OPTION>

--

pero en esta aplicasiòn ajax, php y mysql como se consigue eso?

alguien q me pueda dar una manito con este asunto? de antemano muchas gracias!
  #51 (permalink)  
Antiguo 28/03/2009, 23:00
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 11 meses
Puntos: 16
Respuesta: combobox dependientes con ajax.

Bueno, aunque es un tema viejo revivido recientemente pondre mi solucion para sus comentarios y por si de algo sirve, aclaro que no soy un experto ni en ASP ni mucho menos en AJAX, pero pues es una forma muy simple que yo estoy utilizando en algunos sitios actualmente, en este caso pondre uno para 3 selects dependientes:

1.- Necesitamos un archivo JS que se puede descargar aqui: ajax_loader.js

Y lo ponemos entre las etiquetas HEAD asi:
<script src="ajax_loader.js" type="text/javascript"></script>

2.- En el HTML armamos nuestros combos dependientes, podria haber 2 formas de hacerlo, una seria ir poniendo los combos hasta que se haya seleccionado el combo anterior o bien, poner los 3 combos desde un principio.

Aqui vamos a ponerlo de la segunda forma:

Aqui ponemos el codigo del primer select utilizando ahi mismo la conexion a la base de datos si asi lo requiere:
Código html:
Ver original
  1. <%Set RSt = Server.CreateObject("ADODB.Recordset")
  2.         SQLt="Select * from TABLA order by id ASC"
  3.         RSt.open sqlt, conexion%>
  4.         <select name="servicio" class="sel" onChange="htmlData('[B]cambia.asp[/B]', '[B]select2[/B]', '[B]en=1&ser='+servicio.value[/B])">
  5.             <option value=""> -- Selecciona una opcion -- </option>
  6.             <%do while not rst.eof%>
  7.                 <option value="<%=rst("id")%>"><%=rst("nombre")%></option>
  8.             <%end if
  9.         rst.movenext
  10.         loop%>
  11.             </select>
  12.         <%rst.close
  13.     set rst=nothing%>
  14.         </div>

Aqui resalto la parte del onChange, esto genera una accion cuando se hace algun cambio en el select, en esta parte hay 3 partes que hay que cambiar y tener identificadas:
- cambia.asp: es un archivo que debemos generar y que sera el que haga la gestion entre la base de datos y nos imprimira los demas selects, mas adelante lo pondremos.
- select2: es un DIV en donde se mostrara el resultado de la consulta, este nombre debera ser el mismo que el DIV donde se pondra el resultado, aqui es donde podemos escoger si imprimir los demas selects desde el principio o hasta haber seleccionado el primero. Si queremos usar la segunda opcion simplemente creamos el DIV vacio:
<div id="select2"></div>

Si deseamos la segunda opcion podemos hacer lo siguiente:
Código HTML:
Ver original
  1. <div id="select2">
  2.         <select name="select2" disabled="disabled">
  3.             <option value=""> -- Selecciona un servicio -- </option>
  4.         </select>
  5. </div>
NOTA: deje desactivado el select por que no tiene informacion

Igual hacemos con el tercer select
<div id="select3">
<select name="select3" disabled="disabled">
<option value=""> -- Selecciona un servicio -- </option>
</select>
</div>
<img src="enviar.jpg" onClick="javascript:document.frm.submit();" />

- en=1&ser='+servicio.value, esta parte lo que genera es darle el valor a las variables que se van a enviar al archivo, en este caso cambia.asp, en este caso mandamos una variable en, que sera en el archivo cambia.asp la opcion que vamos a tomar y la parte ser nos manda el valor del select seleccionado.

Ahora vamos a ver el archivo cambia.asp:
Código asp:
Ver original
  1. <!--#include file="conexion.inc" -->
  2. <%Response.CharSet = "ISO-8859-1"
  3. Response.addHeader "pragma", "no-cache"
  4. Response.CacheControl = "Private"
  5. Response.Expires = 0
  6.  
  7. en=request("en")
  8.  
  9. if en=1 then 'ACTUALIZA SELECT 1
  10.        sel2=request("ser")
  11.         if sel2<>"" then
  12.        Set RSt = Server.CreateObject("ADODB.Recordset")
  13.        SQLt="Select * from TABLA WHERE id="&sel2&" order by nombre ASC"
  14.     RSt.open sqlt, conexion%>
  15.         <select name="select2" onchange="htmlData('cambia.asp', 'select3', 'en=2&sel2='+select2.value)">
  16.             <option value=""> -- Selecciona una opcion -- </option>
  17.             <%do while not rst.eof%>
  18.                 <option value="<%=rst("id")%>"><%=rst("nombre")%></option>
  19.             <%end if
  20.             rst.movenext
  21.         loop%>
  22.         </select>
  23.         <%rst.close
  24.     set rst=nothing%>
  25.         <%else%>
  26.         <select name="select2" disabled="disabled">
  27.             <option value=""> -- Selecciona un servicio -- </option>
  28.         </select>
  29.        
  30.         <%end if
  31.  
  32. elseif en=2 then 'ACTUALIZAR SELECT 2
  33.  
  34.        sel3=request("ser")
  35.         if sel3<>"" then
  36.        Set RSt = Server.CreateObject("ADODB.Recordset")
  37.        SQLt="Select * from TABLA WHERE id="&sel3&" order by nombre ASC"
  38.     RSt.open sqlt, conexion%>
  39.         <select name="select3">
  40.             <option value=""> -- Selecciona una opcion -- </option>
  41.             <%do while not rst.eof%>
  42.                 <option value="<%=rst("id")%>"><%=rst("nombre")%></option>
  43.             <%end if
  44.             rst.movenext
  45.         loop%>
  46.         </select>
  47.         <%rst.close
  48.     set rst=nothing%>
  49.         <%else%>
  50.         <select name="select3" disabled="disabled">
  51.             <option value=""> -- Selecciona un servicio -- </option>
  52.         </select>
  53.        
  54.         <%end if
  55. end if

NOTA: lo que nos de como resultado el archivo ASP cambia.asp sera lo que se imprima en el DIV puesto en la funcion htmlData

Se que no soy el mejor explicando pero cualquier duda estoy a sus ordenes
__________________
CreandoWebs.com
www.creandowebs.com
PLANTILLAS TEMPLATEMONSTER CON 10% DE DESCUENTO
  #52 (permalink)  
Antiguo 28/03/2009, 23:59
(Desactivado)
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: combobox dependientes con ajax.

he leido el codigo , alguien puede decirme como estaba compuesta la base de datos , por que no me funciona. Gracias .
  #53 (permalink)  
Antiguo 01/04/2009, 07:44
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: combobox dependientes con ajax.

Hola

Veamos si este te es mas sencillo


Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #54 (permalink)  
Antiguo 01/04/2009, 11:28
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 9 meses
Puntos: 535
Respuesta: combobox dependientes con ajax.

Hola Adler, no creo que le sirva ya que hugorei se dio por vencido en ese tema y... ¿adivina quién es paleleglas?
__________________
...___...
  #55 (permalink)  
Antiguo 01/04/2009, 12:39
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: combobox dependientes con ajax.

aaahhh, se me estaba olvidando
  #56 (permalink)  
Antiguo 02/04/2009, 05:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: combobox dependientes con ajax.

Que picaro!
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #57 (permalink)  
Antiguo 03/04/2009, 19:59
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 11 meses
Puntos: 6
Respuesta: combobox dependientes con ajax.

Amigos,

Yo implementé el combo triple de pais estado ciudad y el combo doble de fechas y acabo de colgar todo aca en mi server, incluida la base de datos. Descarguienla aca

Saludos,
Luis
  #58 (permalink)  
Antiguo 14/09/2009, 09:25
Avatar de akela  
Fecha de Ingreso: septiembre-2000
Ubicación: Frente a la compu
Mensajes: 660
Antigüedad: 24 años, 2 meses
Puntos: 2
Respuesta: Re: combobox dependientes con ajax.

Cita:
Iniciado por AlZuwaga Ver Mensaje
Hola Lexus, luisvasquez y al resto de la manada del foro :)

Acá les dejo una traducción a ASP de dicho código:

select_dependientes.asp:
Código:
<!-- 
Este código fuente es de libre utilización y modificación bajo la siguiente licencia:
http://creativecommons.org/licenses/by-nc-sa/2.5/
Puedes distribuir estos scripts o colocarlos en tu Sitio siempre y cuando no elimines estos comentarios y la licencia expuesta sea respetada.

Mas ejemplos y material sobre AJAX en: http://www.formatoweb.com.ar/ajax
Cualquier sugerencia, crítica o comentario son bienvenidos.
Contacto: [email protected]

Traducido a ASP por Al Zuwaga (http://www.forosdelweb.com/showpost.php?p=1878212&postcount=4) el 02/02/2007
-->
<%
sub generaPaises()
	cst = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/db_.mdb")
	Set oConn = Server.CreateObject("ADODB.Connection")
	oConn.open cst
	
	Set Rs = Server.CreateObject("ADODB.Recordset")
	consulta = "SELECT * FROM paises_registro"
	Rs.Open consulta, oConn

	' Voy imprimiendo el primer select compuesto por los paises
	Response.Write "<select class=""combo"" id=""select_0"" name=""paises"" onChange=""cargaContenido()"">"
	While not Rs.EOF
		Response.Write "<option value=""" & Rs(0) & """>" & Rs(1) & "</option>"
		Rs.MoveNext
	Wend
	Response.Write "</select>"

	Rs.Close
	Set Rs = Nothing
	oConn.Close
	Set oConn = Nothing
End sub
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style type="text/css"> 
.punteado 
{ 
	border-style:dotted; 
	border-color:#000000; 
	background-color:#EAEAEA;
	font-family:Verdana; 
	font-size:10px; 
	text-align:center;
}

.combo
{
	font-family:Verdana; 
	font-size:10px; 
	border-color:#CCCCCC;
}
</style>

<script language="javascript" type="text/javascript">
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) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}

function cargaContenido()
{
	var valor=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;
	if(valor==0)
	{
		// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo todo por defecto
		combo=document.getElementById("select_1");
		combo.length=0;
		var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Pais...";
		combo.appendChild(nuevaOpcion);	combo.disabled=true;
	}
	else
	{
		ajax=nuevoAjax();
		ajax.open("GET", "select_dependientes_proceso.asp?seleccionado="+valor, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras carga elimino la opcion "Elige pais" y pongo una que dice "Cargando"
				combo=document.getElementById("select_1");
				combo.length=0;
				var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
				combo.appendChild(nuevaOpcion); combo.disabled=true;	
			}
			if (ajax.readyState==4)
			{ 
				document.getElementById("fila_2").innerHTML=ajax.responseText;
			} 
		}
		ajax.send(null);
	}
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejemplo</title>
</head>

<body>
<center>
<table border="1" width="400" style="border-style:none;">
  <tr>
    <td id="fila_1" width="50%" class="punteado"><% generaPaises() %></td>
	<td id="fila_2" width="50%" class="punteado">
		<select class="combo" disabled="disabled" id="select_1" name="estados">
		<option id="valor_defecto" value="0">Selecciona pais...</option>
		</select>
	</td>
  </tr>
</table>
</center>
</body>
</html>
Estimado Al, estoy tratando de implementar este código, estoy comenzando con ajax y la verdad me he enamorado de la técnica.

pero tengo una duda en este código de Jscript en la línea que pongo en negritas

cuando llamas a "function()" llamas a la función en la que ya estas dentro?? algo así como recursivo??

perdona la ignoracia y un saludo!!
__________________
Si quieres que las cosas sucédan

provocalas!
  #59 (permalink)  
Antiguo 14/09/2009, 10:15
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: combobox dependientes con ajax.

Eso no es más que una forma implementar un evento, en este caso al onreadystatechange, hubiera sido lo mismo que se hiciera una función llamada como quisieras y asignársela en esa misma linea, como esto:

Código javascript:
Ver original
  1. function UnNombreCualquiera() {
  2.             if (ajax.readyState==1)
  3.             {
  4.                 // Mientras carga elimino la opcion "Elige pais" y pongo una que dice "Cargando"
  5.                 combo=document.getElementById("select_1");
  6.                 combo.length=0;
  7.                 var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
  8.                 combo.appendChild(nuevaOpcion); combo.disabled=true;   
  9.             }
  10.             if (ajax.readyState==4)
  11.             {
  12.                 document.getElementById("fila_2").innerHTML=ajax.responseText;
  13.             }
  14.         }
  15.  
  16. function cargaContenido(){
  17. ...
  18. ...
  19. ajax.onreadystatechange= UnNombreCualquiera
  20. ....

Saludos
  #60 (permalink)  
Antiguo 14/09/2009, 10:58
Avatar de akela  
Fecha de Ingreso: septiembre-2000
Ubicación: Frente a la compu
Mensajes: 660
Antigüedad: 24 años, 2 meses
Puntos: 2
Respuesta: combobox dependientes con ajax.

gracias Myakire!!!

ahora lo entiendo

saludos y espero que funcione.

=============================0

ya lo solucioné, mi problema esra con javascript. no entiendo mucho de eso, pero finamente consegui hacer que funcionara, ahora si como dice Al en su primer post, ya puedo cobrar mas diciendo que la web es 2.0 ;)

gracias
__________________
Si quieres que las cosas sucédan

provocalas!

Última edición por akela; 14/09/2009 a las 12:14
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 5 personas




La zona horaria es GMT -6. Ahora son las 00:10.