你好,我是ASP.NET开发的新手。我无法使用Jquery获取正确的序列化表单。
<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>
答案 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);
}
。