jQueryforms序列化 – 空string

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

你必须给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()获取表单字段的名称和值,并创build一个string,如name1=value1&name2=value2 。 没有名字就不能创build这样的string。

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

虽然它不适用于这个特定的例子,但如果一个或多个表单input被禁用,则会发生相同的行为。 这些input不会显示在序列化的string中。 在我的情况下,所有表单input都有值,但被禁用,导致返回一个空string。

在input中没有name属性…这可能是序列化的问题。

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

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