2012-01-31 17 views
12

Długo pisałem z serializacją formularza, ale zaskakująco nie serializuje formularza. Oto kod:jQuery serializować nie działa

<div id="content"> 
</div> 
<form id= "myform"> 
    <input type="text" id="inp"value="mytext"> 
    <input type="button" id="btn" value="serialize"/> 
</form> 

Oto kod jQuery pracuję z:

$("form").submit(function(e){ 
    e.preventDefault(); 
    var v= $(this).serialize(); 
    console.log(v); 
}); 

Oto fiddle

Odpowiedz

47

Trzeba atrybut name na polach input. W przeciwnym razie są one ignorowane przez jQuery's .serialize().

Oto cytat from the docs:

Uwaga: Tylko "udane" Kontrole są szeregowane do łańcucha. Żadna wartość przycisku przesyłania nie jest przekształcana do postaci szeregowej, ponieważ formularz nie został przesłany za pomocą przycisku. Aby wartość elementu formularza została uwzględniona w serializowanym łańcuchu, element musi mieć atrybut nazwy. Wartości z pól wyboru i przycisków opcji (wejścia typu "radio" lub "pole wyboru") są uwzględniane tylko wtedy, gdy są zaznaczone. Dane z elementów wyboru plików nie są serializowane.

Oto Twoja skrzypce z atrybutem name: http://jsfiddle.net/6fgUg/28/

+1

ah! Potrzebowałem tylko zestawu świeżych oczu, tnx do szybkiej odpowiedzi – Tassadaque

2

Musisz nadać nazwę elementu HTML wejściowego, na przykład:

<form id="myform"> 
    <input type="text" id="inp" name="inp" value="mytext"> 
    <input type="button" id="btn" name="btn" value="serialize"/> 
</form>