Ver Mensaje Individual
  #38 (permalink)  
Antiguo 07/07/2008, 01:34
Avatar de engonga
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
%>