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
Также убедитесь, что на странице нет двух элементов с одним и тем же идентификатором.