JQuery form serialize - пустая строка

Мой html:

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

Когда я запускаю событие click, formData пуст. Я использую jQuery 1.4.2.

Ответ 1

Вы должны указать элементу input имя. Например:.

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

предоставит вам окно предупреждения foo=2.

.serialize() берет имя и значение полей формы и создает строку типа name1=value1&name2=value2. Без имени он не может создать такую ​​строку.

Обратите внимание, что name отличается от id. Ваша форма также не сработала бы, если бы вы использовали ее в обычном режиме. Каждому полю формы требуется имя.

Ответ 2

Хотя это не относится к этому конкретному примеру, такое же поведение возникает, если один или несколько входов формы отключены. Эти входы не будут отображаться в сериализованной строке. В моем случае все входные данные формы имели значения, но были отключены, в результате чего была возвращена пустая строка.

Ответ 3

В вводе нет атрибута name... это может быть проблемой для сериализации.

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

Ответ 4

Также убедитесь, что на странице нет двух элементов с одним и тем же идентификатором.