Jquery 组合form元素为json格式,asp.net反序列化

  作者:敖士伟 Email:[email protected] 转载注明作者

  说明: 1、js根据表单元素class属性,把表单元素的name和value组合为json格式;用表单元素class属性可以针对性地组合JSON数据。

  2、后端ASP.NET用JavaScriptSerializer反序列化为对象实列。

  3、好处:简化了前端数据读取与后端数据赋值。

  

复制代码 代码如下:

  function GetJSONStr(class_name) {

  var a = [];

  //文本框

  $("." + class_name).filter(":text").each(function(i) {

  //alert(this.name);

  //alert(this.value);

  a.push({ name: this.name, value: this.value });

  });

  //下拉列表

  $("." + class_name).filter("select").each(function(i) {

  //alert(this.name);

  //alert(this.value);

  a.push({ name: this.name, value: this.value });

  });

  //单选框

  $("." + class_name).filter(":radio").filter(":checked").each(function(i) {

  //alert(this.name);

  //alert(this.value);

  a.push({ name: this.name, value: this.value });

  });

  //复选框开始

  var temp_cb = "";

  $("." + class_name).filter(":checkbox").filter(":checked").each(function(i) {

  if (temp_cb.indexOf(this.name) == -1) {

  temp_cb += this.name + ",";

  }

  });

  var temp_cb_arr = temp_cb.split(",");

  var cb_name = "";

  var cb_value = "";

  for (var temp_cb_i = 0; temp_cb_i < temp_cb_arr.length - 1; temp_cb_i++) {

  cb_name = temp_cb_arr[temp_cb_i];

  var cb_value_length = $("input[name='" + temp_cb_arr[temp_cb_i] + "']:checked").length;

  $("input[name='" + temp_cb_arr[temp_cb_i] + "']:checked").each(function(i) {

  if (i == cb_value_length - 1)

  cb_value += this.value;

  else

  cb_value += this.value + ",";

  });

  //alert(cb_name);

  //alert(cb_value);

  a.push({ name: cb_name, value: cb_value });

  }

  //复选框结束

  //组合为JSON

  var temp_json = "";

  for (var json_i = 0; json_i < a.length; json_i++) {

  if (json_i != a.length - 1) {

  temp_json += '"' + a[json_i].name + '":"' + a[json_i].value + '",';

  }

  else {

  temp_json += '"' + a[json_i].name + '":"' + a[json_i].value + '"';

  }

  }

  return "{" + temp_json + "}";

  }

  ASP.NET

  

复制代码 代码如下:

  public partial class test : System.Web.UI.Page

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  JavaScriptSerializer Serializer = new JavaScriptSerializer();

  string r = Request.Form["msg"];

  //{"Name":"MyName1","Single":"one"}

  t_json t_json_object = Serializer.Deserialize<t_json>(r);

  Response.Write(t_json_object.Name);

  Response.End();

  }

  }

  class t_json

  {

  public DateTime Name;

  public string Single;

  }