2011-03-22 22 views
6

Tengo una forma de jQuery en el que crean una serie de casillas de verificación:casillas de verificación serialización en jQuery

<?php 
<form method="post" id="b-form" action="../createb.php"> 
    for ($i=0; $i<$request_count; $i++){ 
     <div class="request-check"> 
      <table> 
      <tr> 
       <td><input type="checkbox" name="show_request[]" value="request".$i."  checked="checked"/>select request</td> 
      </tr> 
      </table> 
     </div> 
    } 

Javascript

$.ajax({ 
      type: 'POST', 
      url: '../createb.php', 
      data: $('#b-form').serialize(), 
      success: function (msg){ 
       alert(msg); 
      } 
}) 

en el momento createb.php está haciendo una prueba forma

$requests = $_POST['show_request']; 
    $request_count = count($requests); 
    echo 'count: '.$request_count; 
    echo $requests[0]; 

El problema es que la función de serializar solo ve la primera casilla e indica si ha sido che acertado o no. No ve ninguna de las otras casillas de verificación. ¿Alguien tiene una idea de por qué las otras casillas de verificación no se serializan y qué hacer al respecto?

Gracias David

+0

Se puede también pegar aquí el código HTML generado por la secuencia de comandos? El código que has pegado aquí me parece extraño? –

Respuesta

3

Bueno, es cierto que usted está teniendo todas las casillas de verificación con el nombre name y cualquier id para separarlos.

intenta crear gustan:

<input 
    type = "checkbox" 
    id = "ckb_<?php echo $i ?>" 
    name = "ckb_<?php echo $i ?>_show_request[]" 
    value = "request".$i." 
    checked = "checked"/> select request 

Estoy seguro de que $('#b-form').serialize() ahora va a generar todas las casillas como desee que

2

Su selector está mal.

Probar:

$('#b-form input:checkbox').serialize() 

Para obtener sólo comprobado de entrada, utilice:

$('#b-form input:checkbox:checked').serialize() 
3

Presupuesto de Jquery documentation: Sólo "controles con éxito" son serializados a la cadena (cuando se utiliza $ (forma). serialize()) o a array ($ (form) .serializeArray()). Los valores de las casillas de verificación y botones de opción (entradas de tipo "radio" o "casilla de verificación") se incluyen solo si están marcados.

se puede usar algo como esto para emular el comportamiento similar a lo que se espera:

var myCbValuesArray = $("input:checkbox").map(function(){ 
    return $(this).is(":checked"); 
}).get(); 
1

Esto funcionará para usted.

Usted puede obtener los valores seleccionados por casillas de verificación

$("input[type='checkbox']:checked").serialize(); 
Cuestiones relacionadas