无法使用jquery序列化HTML表单

时间:2016-08-15 16:57:13

标签: jquery asp.net

你好,我是ASP.NET开发的新手。我无法使用Jquery获取正确的序列化表单。you can see that asp hidden fields is attached to my serialize string

<html xmlns="http://www.w3.org/1999/xhtml">
 <head runat="server">
 <title></title>
 <script src="jquery-1.10.2.js" type="text/javascript"></script>
 <script src="jquery-1.10.2.min.js" type="text/javascript"></script>
 <script type="text/javascript"> 
    $(document).ready(function () {
        $("#button2").click(function () {
            var form = $("#form1").serialize();
            alert(form);

        });
    });
   </script>
   </head>
    <body>
    <form id="form1" runat="server">
    <asp:TextBox ID="textbox1" runat="server"></asp:TextBox> 
    <asp:Button runat="server" ID="button2" Text="submit" />
    <div>

   </div>
  </form>
  </body> 
    </html>

1 个答案:

答案 0 :(得分:1)

表单序列化似乎正常工作。它将表单序列化为name=First%20Last&age=27对的URL格式。例如__VIEWSTATE

由于您使用的是ASP.NET表单,因此它们具有隐藏的__VIEWSTATE=SC20935uo236h2oth3li3h...字段。这就是您查看__VIEWSTATE的原因。您不应该提交视图状态,因为它是一种特定于ASP.NET的机制,用于跟踪表单所处的状态。

您可以通过使用JQuery选择除 __VIEWSTATE之外的所有输入,从序列化中排除$('#form1').on('submit', function() { var serializedFields = $('input[name!=__VIEWSTATE]', this).serialize(); console.log(serializedFields); }); 字段。

console.log()

在Windows上打开浏览器的开发者控制台( Ctrl + Shift + J )以查看submit消息(这比使用警报好得多)。

这可以通过聆听表单的__VIEWSTATE事件,然后查询除 this之外的所有字段来发挥作用。因为我们在表单提交事件中,$('...', this)引用了表单,所以我们将其作为选择器的上下文传递,因此if (c == '\n') { System.out.print(builder.toString()); builder.setLength(0); }