2010-04-07 12 views
75

Moje html:jQuery forma serialize - pusty ciąg

<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" /> 

Kiedy odpalić zdarzenia click, formData jest pusty. Używam jQuery 1.4.2.

Odpowiedz

173

Musisz nadać elementowi nazwę input. Np .:

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

poda Ci w polu ostrzeżenia foo=2.

.serialize() przyjmuje nazwę i wartość pól formularza i tworzy ciąg znaków, taki jak name1=value1&name2=value2. Bez nazwy nie może utworzyć takiego ciągu.

Pamiętaj, że name to coś innego niż id. Twój formularz również nie działałby, gdybyś używał go w "normalny" sposób. Każde pole formularza wymaga nazwy.

+1

są identyfikatory niezbędne do postaci serializacji btw? – Vic

+4

Nie, nie są. –

+2

Nigdy nie zgadywałem, że działa mi absolutnie dobrze –

7

Na wejściu nie ma atrybutu name, który może stanowić problem z serializacją.

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

Chociaż nie ma to zastosowania do tego konkretnego przykładu, to samo zachowanie występuje, jeśli jedno lub więcej wejść formularza jest wyłączone. Te dane wejściowe nie pojawią się w ciągu serializowanym. W moim przypadku wszystkie dane wejściowe formularza miały wartości, ale zostały wyłączone, co spowodowało zwrócenie pustego ciągu znaków.

+0

Świetne, że zrobili to dla mnie! Chciałbym, żeby doktorzy wspomnieli o tym ważnym fakcie. –

+3

dzięki, problem ciągnie mnie przez dwie godziny –

+3

To jest paskudny. Chciałem wyłączyć te pola, gdy wysyłam pocztę w stylu ajaxowym i zrobiłem _ przed rozpoczęciem serializowania formularza ... –

4

Upewnij się również, że na stronie nie ma 2 elementów o tym samym identyfikatorze.

+2

To jest komentarz, a nie odpowiedź na pytanie. Proszę używać komentarzy w przyszłości. Dzięki :) –