用jquery提交单,并进行处理.

来源:互联网 发布:自然共和国怎么样知乎 编辑:程序博客网 时间:2024/06/10 06:58
之前在.net中使用ajax的时候, 向后台发送了一个httpRequest请求,总是会返回一大串没有用的值,比如<!Document ..... 类似, 导致了在取到返回数据的时候,必需要用字符串处理函数处理一下. 现在想起来,那个时候还是学的不深,不能深深体会ajax的精髓. 之所以返回了一堆<body><head>是因为我请求的是一个aspx的页面, 做为一个页面,当然会有这些信息了.. 正确的方法是将请求发送到ashx文件中,这样返回的信息就不会有多余的了.

其实jquery提交表单很简单.
  1.         function SaveForm()
  2.         {
  3.             var form = $("#aspnetForm");
  4.             var action = form.attr("action");
  5.             var serializedForm = form.serialize();
  6.             $.post("serverPage.ashx",serializedForm,AutoSaveBack());
  7.         }
  8.         function AutoSaveBack()
  9.         {
  10.             alert('I come back');
  11.         }

aspnetForm是表单的名称, action是事先定义的要提交到的页面,在这个例子中其实可以忽略的. 将表单序列化,变成para1=xxx&para2=xxx&para3=xxx....的形式. 然后将这些数据提交到ashx文件中进行处理. AutoSaveBack是回调函数,可以将返回的结果进行处理.

后台的了获取方法如下:
  1. if (context.Request.HttpMethod == "POST")
  2.         {
  3.             string radio = context.Request["ctl00$ContentPlaceHolder1$RadioButtonList1"].ToString();
  4.             string text = context.Request["ctl00$ContentPlaceHolder1$TextBox1"].ToString();
  5.             string dropdown = context.Request["ctl00$ContentPlaceHolder1$DropDownList1"].ToString();
  6.         }
当然, 在这个例子中, 我还没有找到如何处理checkboxlist的方法, 似乎在操作checkboxlist的时候,只能按照前台生成的控件name来一个一个取. 但是这样太麻烦了.

P.S. 如果是Master页,要注意的是控件生成的时候,id和name会加上前缀, 你的表单的id,在实际生成的时候会变成aspnetForm,
这一点需要注意,而且在引用的时候
  1.     <script language="javascript" src='<%=ResolveUrl("~/js/jquery.js")%>' type="text/javascript"></script>
要这样引用,否则后台会取不到数据..我也不清楚原因. 一会要好好研究一下, 还有那个checkbox有没有更好的取值方法.