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

como enviar el array de checkbox selecionados

Estas en el tema de como enviar el array de checkbox selecionados en el foro de Frameworks JS en Foros del Web. hola tengo un problemon y esque tengo un formulario con checkbox dinámicos y no se como enviar los selecionados mediante ajax a un archivo mail.php ...
  #1 (permalink)  
Antiguo 18/01/2009, 10:14
 
Fecha de Ingreso: marzo-2008
Mensajes: 82
Antigüedad: 16 años, 1 mes
Puntos: 0
como enviar el array de checkbox selecionados

hola tengo un problemon y esque tengo un formulario con checkbox dinámicos y no se como enviar los selecionados mediante ajax a un archivo mail.php que sera el q lo enviara a un mail.
El problema está en pasar el array de seleccion[]

Código PHP:
?
// Realizar la conexión a la BD 
include ("config.php");
// Ejecutar la consulta para obtener los datos de la BD.
$resultado=mysql_query("SELECT * FROM tabla");

// Se inicial el formulario
echo "<form action=\"procesar.php\" method=\"post\"> \n";

// Extraemos y componemos los checbox dinámicos de los datos de nuestra tabla de la BD.
while ($row mysql_fetch_array($resultado)){
  echo 
"<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['id']."\">".$row['nombre']."<br>";
}
<
br>
<
input class="inputNormal" type="text" id="Nombre">
// Cerramos el formulario y ponemos nuestro botón de Submit.
echo "<input type=\"submit\" name=\"Submit\" value=\"Enviar\">";
echo 
"</form>";
?> 
la fincion ajax es mas o menos la siguiente

Código PHP:
var nombre=eliminaEspacios(form.inputNombre.value);
var 
apellidos=eliminaEspacios(form.apellidos.value);

var 
ajax=nuevoAjax();
        
ajax.open("POST"mail.phptrue);
        
ajax.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
        
ajax.send("nombre="+nombre+"&apellidos="+apellidos"); 
        
        ajax.onreadystatechange=function()
        {
            if (ajax.readyState==4)
            {
                var respuesta=ajax.responseText;
                if(respuesta=="
OK")
                {
                    var texto="
<img src='ok.gif' alt='Ok'><br>Gracias por su mensaje.<br>Le responderemos a la brevedad.<br><br><button style='width:45px; height:18px; font-size:10px;' onClick='ocultaMensaje()' type='button'>Ok</button>";
                }
                else var texto="
<img src='error.gif'><br><br>Errorintente más tarde.<br><br><button style='width:45px; height:18px; font-size:10px;' onClick='ocultaMensaje()' type='button'>Ok</button>";
                
                muestraMensaje(texto);
            }
        } 
Espero que me ayudeis. Gracias
  #2 (permalink)  
Antiguo 18/01/2009, 16:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: como enviar el array de checkbox selecionados

Hola riscking,

Tienes que recorrer todos los elementos de tu <form> usando las funciones de DOM de Javascript, como document.getElementByTagName, recuperar los seleccionados mirando la propiedad "checked" de cada elemento y agregarlas a un array, posteriormente transformas ese array en un string y lo anexas a tu petición AJAX.

Saludos
  #3 (permalink)  
Antiguo 18/01/2009, 16:21
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: como enviar el array de checkbox selecionados

Hola:

Se pueden seleccionar en un array los que están checked...

sels = [];
for (i = 0, s = form["seleccion[]"], total = s.length; i < total; i ++) if (s[i].checked) sels.push(s[i].value);

y luego "sels=" + sels.join(","), aunque en php debeías recogerlos con un implode...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 18/01/2009, 16:34
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: como enviar el array de checkbox selecionados

¡Menudo choque...!

__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 18/01/2009, 18:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 82
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: como enviar el array de checkbox selecionados

vaya si que me habia ido por lo cerros de ubeda, juas juas.

A ver la cosa a quedado asi y me da q algo está mal porque no me hace ada al enviar.
contador dice la longitud del array total osea los checkbox q hay.

Código PHP:
form=document.getElementById("formulario");
var 
nombre=eliminaEspacios(form.inputNombre.value);
var 
apellidos=eliminaEspacios(form.apellidos.value);
sels = []; -->esto asi a secas no se si estara bien asi esque no me suena haberlo visto.
form["seleccion[]"];
for (
0,  contador++) 
if (
s[i].checked
sels.push(s[i].value);

var 
ajax=nuevoAjax();
        
ajax.open("POST"mail.phptrue);
        
ajax.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
        
ajax.send("nombre="+nombre+"&apellidos="+apellidos+"&sels="+sels.join(",")"); 
        
        ajax.onreadystatechange=function()
        {
            if (ajax.readyState==4)
            {
                var respuesta=ajax.responseText;
                if(respuesta=="
OK")
                {
                    var texto="
<img src='ok.gif' alt='Ok'><br>Gracias por su mensaje.<br>Le responderemos a la brevedad.<br><br>
<
button style='width:45px; height:18px; font-size:10px;' onClick='ocultaMensaje()' type='button'>Ok</button>";
                }
                else var texto="
<img src='error.gif'><br><br>Errorintente más tarde.<br><br>
<
button style='width:45px; height:18px; font-size:10px;' onClick='ocultaMensaje()' type='button'>Ok</button>";
                
                muestraMensaje(texto);
            }
        } 
caricatos te puedo pasar los archivos y le hechas un ojo si veo q no me va sino te importa claro,y muchas gracias por contestar estaba mas perdido q la leche y esque llevo muy poco trabajando con ajax y esto me esta dando un quebradero de cabeza de la leche.
  #6 (permalink)  
Antiguo 18/01/2009, 22:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: como enviar el array de checkbox selecionados

Pues veo para empezar que tienes un problema en que abres una comilla y nunca la cierras, si te fijas el mismo coloreador del foro te indica el problema.

Saludos
  #7 (permalink)  
Antiguo 18/01/2009, 22:44
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: como enviar el array de checkbox selecionados

Hola:

Código:
sels = []; -->esto asi a secas no se si estara bien asi esque no me suena haberlo visto.
Eso es lo mismo que poner sels = new Array(), o sea que crea un array vacio, y se van añadiendo elementos con sels.push(algo) (push es un método nativo de los arrays...

Creo que GatorV te enseña el error que tienes, y para que veas el funcionamiento online, copia el siguiente código:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>
	http://www.caricatos.net/probador
</title>
<script>
function mostrar() {
f = document.forms[0];
sels = [];
for (i = 0, s = f["seleccion[]"], total = s.length; i < total; i ++)
 if (s[i].checked) sels.push(s[i].value);
alert("seleccion=" + sels.join(","));
}
</script>
</head>
<body>
<form action="javascript: mostrar()" >

<input type="checkbox" name="seleccion[]" value="a">a<br/>
<input type="checkbox" name="seleccion[]" value="b">b<br/>
<input type="checkbox" name="seleccion[]" value="c">c<br/>
<input type="checkbox" name="seleccion[]" value="d">d<br/>
<input type="checkbox" name="seleccion[]" value="e">e<br/>

<br />
<input class="inputNormal" type="text" id="Nombre">

<input type="submit" name="Submit" value="Enviar"
</form>
</body>
</html>
... y pégalo en la pestaña "Editar" de esta página: Probador de scripts. Luego prueba los resultados en la pestaña del mismo nombre...

Y si quieres que el array lo reciba php sin necesidad del explode (antes lo puse mal), el array deberías cargarlo así:

Código:
if (s[i].checked) sels.push("seleccion[]=" + s[i].value);
Y los parámetros casi igual a como la tienes:

ajax.send("nombre="+nombre+"&apellidos="+apellidos +"&"+sels.join("&"));

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 19/01/2009, 09:55
 
Fecha de Ingreso: marzo-2008
Mensajes: 82
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: como enviar el array de checkbox selecionados

caricatos eres un crack, si señor ya lo he conseguido, al final los parametros se los he pasado de la anterior forma que ya lo pasa como un string y asi no tengo q modificarlo ya q me saca los valores selecionados.

ajax.send("nombre="+nombre+"&apellidos="+apellidos +"&sels="+sels.join(","));

Estaba bien la primera vez solo que cometi un fallo garrafal con el for poniendo , y no ; pero bueno despues de casi dos dias dando guerra ya esta, te debo una y a GatorV tb por contestar.

Creo q he aprendido bastante con esto tanto de ajax como de javascript.

Un saludo y hasta otra.
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 21:15.