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

Enviar Fomulario - OJO - Esto si esta dificil

Estas en el tema de Enviar Fomulario - OJO - Esto si esta dificil en el foro de Frameworks JS en Foros del Web. Tengo un Formulario con muchos inputs... creo que son como 50... y también tiene selects... y he aquí el problema... dos de los selects que ...
  #1 (permalink)  
Antiguo 04/07/2007, 10:32
Avatar de oabareload  
Fecha de Ingreso: junio-2006
Ubicación: Distrito Federal, México
Mensajes: 57
Antigüedad: 17 años, 10 meses
Puntos: 0
Enviar Fomulario - OJO - Esto si esta dificil

Tengo un Formulario con muchos inputs... creo que son como 50... y también tiene selects... y he aquí el problema... dos de los selects que tengo son múltiples... nunca pensé que fueran un problema pero al enviar el formulario con ajax no se como hacerle para que envié todos los valores del select...

Este es uno de los Select

Código HTML:
 <label onmouseover="muestraAyuda(event, 'Documentos Presentados')">Documentos Presentados</label>
	<select name="documentos" class="other" multiple="multiple" id="documentos" onfocus="foco(this);" onblur="validaselect(this,0);" >
		<option value="1">Acta de Nacimiento</option>
		<option value="2">IFE</option>
		<option value="3">Cartilla</option>
		<option value="4">Documento # IMSS</option>
		<option value="5">Hoja de Retenci&oacute;n</option>
		<option value="6">Comprobante de Estudios</option>
		<option value="7">Comprobante de Domicilio</option>
		<option value="8">Carta de Recomendaci&oacute;n</option>
		<option value="9">Fotos</option>
	</select><br /><br /> 
Función que envía el Formulario

Código:
function enviarFormulario(url, formid, divid)
	{
		minutos = 15;
		segundos = 00;
		var peticion = nuevoAjax();
		var Formulario = document.getElementById(formid);
		var longitudFormulario = Formulario.elements.length;
		var cadenaFormulario = ""
		var sepCampos = ""
		for (var i=0; i <= Formulario.elements.length-1;i++)
			{
				cadenaFormulario += sepCampos+Formulario.elements[i].name+'='+encodeURI(Formulario.elements[i].value);
				sepCampos="&";
				Formulario.elements[i].disabled = true;
			}
		var obj = document.getElementById(divid);
		peticion.open("POST", url, true);
		document.getElementById("submit").disabled = true;
		peticion.onreadystatechange = function()
			{
				if (peticion.readyState == 4)
					{
						if (peticion.status == 200)
							{
								var result = peticion.responseText;
								obj.innerHTML = result;											displaychange("loading","none");
							}
						else
							{
								estado(peticion.status);
							}
					}
			}
		peticion.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		peticion.send(cadenaFormulario);
		return false;
	}
Y viendo lo que envía pude constatar que no lo envía completo... bueno al menos los select múltiples que solo envía un valor, obvio, el primero..

Espero que alguien se apiade de mi... y me ilumine... jejeje... se que ha de haber otra forma de enviarlo... pero no la encuentro...

Por su atención GRACIAS!!!!
  #2 (permalink)  
Antiguo 04/07/2007, 10:54
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Enviar Fomulario - OJO - Esto si esta dificil

Hola:

Bueno, el problema de los select multiples no es de ajax sino de javascript... y también puede ser un problema el lenguaje que recibe los datos, por ejemplo, para recibir un array con php, el nombre del campo debe terminar en un juego de corchetes []. Pero también debes añadir a la lista de parámetros cada uno de los selects que se encuentren "selected" (igualito que los checked de los checkboxes)... en otra palabras por cada elemento array no basta con añadir a los parámetros el que devuelva el arributo value, porque siempre será el primero, sino que para esos controles debes hacer otro bucle y añadir los value que estén selected.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 05/07/2007, 07:39
Avatar de oabareload  
Fecha de Ingreso: junio-2006
Ubicación: Distrito Federal, México
Mensajes: 57
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Enviar Fomulario - OJO - Esto si esta dificil

osea que todos los valores ademas tengo volverlos a pasar a un array por si llegan a tener uno o mas valores.... mmmm... no se me había ocurrido... lo malo es que no se javascript pero lo bueno es que siempre me las arreglo....

Mil Gracias... voy a ver si me funciona....
  #4 (permalink)  
Antiguo 05/07/2007, 08:30
Avatar de oabareload  
Fecha de Ingreso: junio-2006
Ubicación: Distrito Federal, México
Mensajes: 57
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Enviar Fomulario - OJO - Esto si esta dificil

Hice esto... pero no me sirvió... alguien sabe por que... me sigue mostrando el mismo resultado... de hecho desde esta sentencia "Formulario.elements[i].value" creo yo es el problema... aqui es donde primero me muestra los valores... y haciendo un Debug... vi que esos valores son los que

Código:
for (var i=0; i < longitudFormulario;i++)
	{
		valores = new Array(Formulario.elements[i].value);
		for (var j=0; j < valores.length;j++)
			{
				cadenaFormulario += sepCampos+Formulario.elements[i].name+'='+encodeURI(valores[j]);
				sepCampos="&";
			}				
		Formulario.elements[i].disabled = true;
	}
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 14:56.