jQuery表单序列化 - 空字符串

时间:2010-04-07 09:43:04

标签: jquery html

我的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。

4 个答案:

答案 0 :(得分:191)

您必须为input元素指定名称。 E.g:

<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的字符串。没有名称就无法创建这样的字符串。

请注意,nameid不同。如果您以“正常”方式使用它,您的表单也将无效。 每个表单字段都需要一个名称。

答案 1 :(得分:73)

虽然它不适用于此特定示例,但如果一个或多个表单输入已禁用,则会出现相同的行为。这些输入不会显示在序列化字符串中。在我的例子中,所有表单输入都有值但被禁用,导致返回一个空字符串。

答案 2 :(得分:7)

输入中没有name属性...这可能是序列化的问题。

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

答案 3 :(得分:6)

还要确保页面上没有2个具有相同ID的元素。