Foros del Web » Programando para Internet » Javascript » Frameworks JS »

pasar variables select multiple con AJAX

Estas en el tema de pasar variables select multiple con AJAX en el foro de Frameworks JS en Foros del Web. buenas... espero q me puedan ayudar con esto, ya que he probado de muchas maneras y no logro resolverlo. tengo un multiple select dinamico q ...
  #1 (permalink)  
Antiguo 31/07/2007, 09:38
 
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 32
Antigüedad: 20 años, 6 meses
Puntos: 0
pasar variables select multiple con AJAX

buenas... espero q me puedan ayudar con esto, ya que he probado de muchas maneras y no logro resolverlo.

tengo un multiple select dinamico q se forma tomando datos de una base de datos.
tiene una funcion en el onchange que al seleccionar una opcion, se actualiza otro select multiple dinamico llamando a un PHP y buscando los datos en una bd.
Esto funciona perfecto utilizando AJAX.

en el primer select hay paises y en el segundo provincias.
al seleccionar un país, en el segundo muestra sus provincias.

Lo que quiero hacer es que al seleccionar dos o mas paises en el segundo muestre las provincias de esos dos o mas países.

El problema es que al seleccionar 2 o mas datos del primer select multiple el segundo solo muestra los datos del primer pais seleccionado.

Como hacer para enviar dos o mas variables mediante AJAX?

xmlHttp.open("GET","getsucursales.php?idpais=" + idpais,true);
xmlHttp.onreadystatechange = handleServerResponse;
xmlHttp.send(null);

en este caso solo le envío un idcadena? como enviarle 2 o 3? en forma dinamica? ya que no sabemos cuantos paises seleccionará el usuario.

Muchas GRACIAS!
  #2 (permalink)  
Antiguo 01/08/2007, 11:15
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: pasar variables select multiple con AJAX

Puedes utilizar un bucle que lea todas las opciones y seleccione las escogidas

Código:
qstr = "getsucursales.php?";

if(el.selectedIndex != undefined && el.selectedIndex != -1){
   for(j=0; j < el.options.length; j++) { 
      if(el.options[j].selected == true) {
         qstr += 'idpais='+escape(el.options[j].value)+'&'; 
}}}

qstr = qstr.substring(0,qstr.length - 1);


xmlHttp.open("GET", qstr, true);
He escrito el código al vuelo. Debe contener algunos errores.
  #3 (permalink)  
Antiguo 01/08/2007, 12:24
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: pasar variables select multiple con AJAX

He pensado un poco sobre este tema y me parece que se puede mejorar el código separando con un carácter ( por ejemplo ";") cada país.

Código:
qstr = "getsucursales.php?idpais=";

if(el.selectedIndex != undefined && el.selectedIndex != -1){
   for(j=0; j < el.options.length; j++) { 
      if(el.options[j].selected == true) {
         qstr += escape(el.options[j].value)+';'; 
}}}

qstr = qstr.substring(0,qstr.length - 1);


xmlHttp.open("GET", qstr, true);
Luego, en el php, basta con ejecutar la instrucción explode para tener todos los paises en un vector que puedes recorrer para componer la respuesta

Código PHP:
$paises explode(';'$_GET['idpais']); 
  #4 (permalink)  
Antiguo 02/08/2007, 12:56
 
Fecha de Ingreso: julio-2007
Mensajes: 13
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: pasar variables select multiple con AJAX

Hoola amigos porfin puedo dar con algo relacionado con lo yo necesito. Debo agradecer a quienes se toman las molestias de ayudar. Resulta que tengo un caso parecidos. Tengo un combobox que se carga con una base de datos. Mi primera duda es que cuando hago la seleccion de una item, logro llamar a un combobox con ajax sin problemas pero mi problema es poder generar dos combobox distintos. No logro que en el archivo ajax pueda enviar los resultados a los dos combobox que estan en el formulario...
Porfavor si me pueden ayudar...cual quier duda hagamenla saber...
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




La zona horaria es GMT -6. Ahora son las 01:18.