2010-04-07 32 views
75

Mi html:jQuery forma serialize - cadena vacía

<script type="text/javascript"> 

    $(function() { 

     $("#bt1").click(function() { 

      var f = $("#form1"); 
      var formData = f.serialize(); 

      alert(formData); 
     }); 

    }); 
</script> 

<div id="div1"> 
     <form id="form1" action="/Home/Test1" method="post" name="down"> 
     <div id="div2"> 
      <input id="input1" type="text" value="2" /> 
     </div>  
     </form> 
    </div> 

<input type="submit" id="bt1" /> 

Cuando enciendo el evento click, FormData está vacía. Estoy usando jQuery 1.4.2.

Respuesta

173

usted tiene que dar el elemento input un nombre. Ej .:

<form id="form1" action="/Home/Test1" method="post" name="down"> 
    <div id="div2"> 
     <input id="input1" type="text" value="2" name="foo"/> 
    </div>  
</form> 

le dará en el cuadro de alerta foo=2.

.serialize() toma el nombre y el valor de los campos del formulario y crea una cadena como name1=value1&name2=value2. Sin un nombre, no puede crear una cadena de ese tipo.

Tenga en cuenta que name es algo diferente de id. Su formulario tampoco habría funcionado si lo utilizó de la manera "normal". Cada campo de formulario necesita un nombre.

+1

son ids necesarios para la forma de serialización por cierto? – Vic

+4

No, no lo son. –

+2

Nunca lo adiviné, funciona absolutamente bien para mí –

7

No hay ningún atributo name en la entrada ... que puede ser un problema para la serialización.

<input id="input1" type="text" value="2" name="input1" /> 
63

A pesar de que no se aplica a este ejemplo particular, el mismo comportamiento se produce si una o más entradas de formulario es discapacitados. Esas entradas no aparecerán en la cadena serializada. En mi caso, todas las entradas de formulario tenían valores pero estaban deshabilitadas, lo que resulta en una cadena vacía que se devuelve.

+0

¡Genial, eso lo hizo por mí! Ojalá los doctores mencionen ese hecho importante. –

+3

gracias, el problema me arrastra por dos horas –

+3

Eso es desagradable. Quería deshabilitar los campos mientras estoy enviando el correo ajax-style y lo hice _antes de serializar el formulario ... –

4

También asegúrese de que no haya 2 elementos con la misma identificación en la página.

+2

Este es un comentario, no una respuesta a la pregunta. Por favor use comentarios en el futuro. Gracias :) –

Cuestiones relacionadas