jQuery表单序列化 - 空字符串

use*_*348 87 html jquery

我的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" />
Run Code Online (Sandbox Code Playgroud)

当我启动click事件时,formData为空.我正在使用jQuery 1.4.2.

Fel*_*ing 200

你必须给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>
Run Code Online (Sandbox Code Playgroud)

会在警报框中给你foo=2.

.serialize()获取表单字段的名称和值,并创建一个字符串name1=value1&name2=value2.没有名称就无法创建这样的字符串.

请注意,这name是不同的id.如果您以"正常"方式使用它,您的表单也将无效.每个表单字段都需要一个名称.

  • 不,他们不是. (5认同)
  • 从来没有猜到,对我来说绝对没问题 (2认同)

Mad*_*aks 75

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

  • 谢谢,问题拖了我两个小时 (4认同)
  • 这是一个令人讨厌的.想要在我发送邮件的时候禁用字段ajax-style并且_before_序列化表单... (4认同)
  • @ JennyO'Reilly当然,但不包含用户输入并不意味着"没有价值". (2认同)
  • 我来这里是为了写这个,因为我觉得这是一个很小的细节!很高兴看到有人写过它! (2认同)

Vic*_*tor 8

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

<input id="input1" type="text" value="2" name="input1" />
Run Code Online (Sandbox Code Playgroud)


Vah*_*idN 6

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

  • 这是一个评论,而不是问题的答案.请将来使用评论.谢谢 :) (2认同)