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

Pasar un array de checkbox a través de AJAX

Estas en el tema de Pasar un array de checkbox a través de AJAX en el foro de Frameworks JS en Foros del Web. Hola, estoy intentando pasar un array de checkbox <type="checkbox" name="menu[]"> a través del AJAX con la función Form.serialize("search") pero solo me devuelve las casillas del ...
  #1 (permalink)  
Antiguo 20/08/2006, 10:15
 
Fecha de Ingreso: agosto-2006
Mensajes: 13
Antigüedad: 17 años, 8 meses
Puntos: 1
Pregunta Pasar un array de checkbox a través de AJAX

Hola, estoy intentando pasar un array de checkbox

<type="checkbox" name="menu[]">

a través del AJAX con la función Form.serialize("search") pero solo me devuelve las casillas del array que he marcado.

Hay alguna manera que te devuelva también los que NO están marcadas???

Gracias y un saludo.
  #2 (permalink)  
Antiguo 21/08/2006, 10:56
 
Fecha de Ingreso: agosto-2006
Mensajes: 41
Antigüedad: 17 años, 8 meses
Puntos: 2
No creo que sea un problema de ajax sino que es el funcionamiento normal de un checkbox. Al hacer un submit los valores que se envían al servidor son únicamente los que están en estado "on"

Albert Lanchas
  #3 (permalink)  
Antiguo 21/08/2006, 13:17
 
Fecha de Ingreso: agosto-2006
Mensajes: 13
Antigüedad: 17 años, 8 meses
Puntos: 1
Entonces lo que se me ocurre es hacer una función que me guarde todos los checkbocs, tanto los marcados como los no marcados, antes de enviarlo a través del AJAX, nosé si servirá...
A ver si me salgo...

Gracias.
  #4 (permalink)  
Antiguo 24/08/2006, 11:52
 
Fecha de Ingreso: agosto-2006
Mensajes: 13
Antigüedad: 17 años, 8 meses
Puntos: 1
Estoy intentando hacer una función que al clicar sobre el checkbox me ponga en un
<inpuy type=text name=numerada2[]> si está o no marcado. Pero sólo consigo que me haga bien el de la primera posición...

La función que mando a AJAX:

Código:
function comprueba(){

  if (document.getElementById('numerada[]').checked == true) 
document.getElementById('numerada2[]').value= 'si';             
  else document.getElementById('numerada2[]').value= 'no';                         
}
He intentado acceder mediante el índice pero me da error:
function comprueba(indice){
...
document.getElementById('numerada2[indice]').value='si';
...
}

PHP

Código:
<input onclick='comprueba()' type='checkbox' name='numerada[]' checked value='$numerada' /> 

<input type='text' name='numerada2[]' /> 
Alguien sabe que es lo que estoy haciendo mal??
Saludos.
  #5 (permalink)  
Antiguo 26/08/2006, 17:12
 
Fecha de Ingreso: agosto-2006
Mensajes: 13
Antigüedad: 17 años, 8 meses
Puntos: 1
Al final he tenido que controlar el array de chekbox a través de PHP, ya que en AJAX solo había conseguido obtener el primer elemento de array.
Expongo el código que he usado:

Código PHP:
<?php 
session_name
('opciones');    //defino la session como “opciones” 
session_start();             //inicio la session que me servirá para guardar  
                             //el array $opciones 

$numSesiones $_POST['numSesiones'];  //obtengo las sesiones deseadas 
$oper $_POST['oper'];                //obtengo el caso para el switch 

if (isset($_POST['oper'])) $oper $_POST['oper']; 
     
switch(
$oper


case 
"alta":        //en el caso de alta dibujo el formulario 

for ($i=0$i<=$numSesiones-1;$i++){     
    
$opciones[$i]=$i;        //pongo el valor de la posición en cada checkbox 
    
echo"<table><tr>     
     <td><input type=\"checkbox\" name=\"opcion[]\" value=\""
.$opciones[$i]."\" /></td> 
     </tr></table>"
;             

$_SESSION['opciones']=$opciones;  //asigno la variable SESSION con el array 
                                  //$opciones obtenido 

break; 



case 
"guardar":    //caso guardar donde recupero tanto los checkboxs que están 
                   //marcados como los que no lo están 

$i=0;            //inicializo a 0 
//compruebo que la sesion exista y que no estén vacíos los arrays de sesion y opcion 
if (isset($_SESSION['opciones']) && (!empty($_SESSION['opciones'])) && (!empty($opcion))){ 
    foreach (
$_SESSION['opciones'] as $opcion){ 
        if (
in_array($opcion,$_POST['opcion'])) 
            
$_POST['opcion2'][$i]="SI"
        else 
            
$_POST['opcion2'][$i]="NO"
        
$i++; 
    } 
}else{  
//significa que no hay marcado ningún checkbox con lo que relleno el  
        //array de todos los checkbox conforme no están marcados. 
     
for ($j=0$j<=$numSesiones-1;$j++) 
        
$_POST['opcion2'][$j]="NO"

break; 

}  
//fin del switch 
session_destroy();  //finalizo la sesion

//para ver los datos del formulario enviados a través de POST 
echo"Datos enviados: <pre>"
print_r($_POST); 
echo
"</pre>";         
?>
PD: He tenido que asignar los valores a otro array: $_POST['opcion2'] debido a que con $_POST['opcion'] no lo hacía bien.

PD2: En el caso de no haber ningún checkbox marcado he realizado un for para llenar el contenido del array a “no”.

PD3: Para mostrar el formulario el <table> lo he puesto dentro del for, ya que sino no me dejaba la linea de separacion.

Saludos.
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:49.