转载:https://blog.csdn.net/qq_40138785/article/details/81533015

一、serialize()方法
格式:var data = $("#formID").serialize();

功能:将表单内容序列化成一个字符串。

注意:要使用params = decodeURIComponent(data ,true)进行解码,不然中文数据会乱码。

数据示例:Name=小明&Age=22&Sex=男

后台:获取字符串后,可以到后台进行处理数据。

二、serializeArray()方法,有三种数据传递
第一种json数组类型,后台反序列化json数据:
格式:var strdata = $("#formID").serializeArray();

功能:将表单序列化成一个JSON结构的对象。数组类型。

数据示例:(3)[{name:"Name",value:"小明"},{name:"Age",value:"22"},{name:"Sex",value:"男"}] 获取数据为 data [0].name

通过JSON.stringify()方法,将json数据转成string类型,供后台接收。

转换类型:var str=  JSON.stringify(strdata );//转换成string数据,以便后台接收

数据示例:”[{name:"Name",value:"小明"},{name:"Age",value:"22"},{name:"Sex",value:"男"}]”//数组类型

前台:

var arry = $("#form1").serializeArray();

$.ajax({
url: "/Login/Index",
data: { jsondata: JSON.stringify(arry) },
type:"post",
success: function () {
alert("success");
}
})
}
后台:

using Newtonsoft.Json;//引用dll

using Newtonsoft.Json.Linq;

自定义类:

public class People
{
public People() { }//构造函数用于初始化数据。
public string Name { set; get; }
public int Age { get; set; }
public string Sex { get; set; }
//因为传进来的json是[{name:"Name",value:"小明"},...]这种类型所以新增name,value字段。
public string name { set; get; }
public string value { set; get; }

}

public ActionResult Index(string jsondata)
{

JArray jarry = (JArray)JsonConvert.DeserializeObject(jsondata);//json数据转换成数组

List<string> list = new List<string>();//实例化对象
for (int i = 0; i < jarry.Count; i++)//循环获取数据
{
list.add(jarry[i]["name"],jarry[i]["value"]);
}
return View();

//或者
public ActionResult Index(string jsondata)
{
List<People> list = new List<People>();//循环获取数据
Dictionary<string, string> dic = new Dictionary<string, string>();//接收重新整理的数组数据
List<People> twoList = JsonConvert.DeserializeObject<List<People>>(jsondata);//反序列化json数组数据
for (int i = 0; i < twoList.Count; i++)//将数据整理并循环放入Dictionary中
{
dic[twoList[i].name] = twoList[i].value;
}
list.Add(new People { Name = dic["Name"], Age = int.Parse(dic["Age"]), Sex = dic["Sex"] });//赋值
return View();
}
                      //获取数据成功

第二种json对象类型数据,后台反序列化json数据:
var obj={};//给obj分配内存

for(var i =0;i<strdata .length;i++)

{

obj[strdata [i].name]=strdata [i]['value'];

}

var str=  JSON.stringify(strdata );//转换成string数据

数据示例:{Name:"小明",Age:"22",Sex:"男"}//对象类型

前台:

后台:

//引用dll

//创建自定义类,注意自定义字段必须包含传来的字段名称。

//反序列化json数据

//成功获取数据

另外一种方法是在前台进行数据整理,后台用自定义类来接收数据。
前台:

var arry = $("#form1").serializeArray();//序列化表单
var obj = {};//分配内存空间
for (var i = 0; i < arry.length; i++) {//数据类型为"自定义类的字段名=数据"后台会自动对数据进行匹配
obj[arry[i].name] = arry[i].value;
}
$.ajax({
url: "/Login/Index",
data:obj,//传递数据
type:"post",
success: function (data) {
alert("success");
}
})
后台:自定义类

public class People
{
public People() { }//构造函数用于初始化数据。
private string _Name;//私有成员变量
private int _Age;
private string _Sex;
public string Name
{

set { _Name = value; }
get { return _Name; }
}
public int Age
{
get { return _Age; } //读取器
set { _Age = value; }//写入器
}

public string Sex
{
get { return _Sex; }
set { _Sex = value; }
}
}
public ActionResult Index(People peo)
{
return View();
}
  接收数据成功

当然这几种方式都可以传递数据,选择那种就看个人的需要了。

js Form表单转json格式,及后台接收(多种方法)的更多相关文章

  1. form表单内容JSON格式转化

    form表单提交时,对于Content-type为application/json是提交时需要转换成json格式,据说form enctype=‘application/json’这样就可以,然而在我 ...

  2. Jquery实现form表单提交后局部刷新页面的多种方法

    最近做一个小项目,刚好需要用到搜索功能,实现搜索框内输入数据然后按回车或者点击“提交”,然后给后台数据库处理并返回数据给前端,在前端局部更新数据. 但是遇到了一个小问题,就是form表单下任意输入框输 ...

  3. jsp页面有一个注册form表单,传值的时候后台接收到的全部是null

    [页面上的传值元素一定要有name属性才可在后台接受到参数的值.切记!] 此处一定要注意,form表单里面的元素,比如input元素是否和后台的requset.getparameter();中的参数名 ...

  4. JS的Form表单转JSON格式

    一.serialize()方法 格式:var data = $("#formID").serialize(); 功能:将表单内容序列化成一个字符串. 注意:要使用params = ...

  5. JS form 表单收集 数据 formSerialize

    做后台系统的时候通常会用到form表单来做数据采集:每次一个字段一个字段的去收集就会很麻烦,网站也有form.js插件可以进行表单收集,并封装成一个对象,通过ajax方法传到后台:现在介绍一种直觉采集 ...

  6. form表单转化json对象

    利用 $.fn 可以让每一个jquery 对象都能直接使用这个方法. //form表单转化json对象$.fn.serializeObject = function () { var o = {}; ...

  7. js将form表单序列化[json字符串、数组、对象]

    1.序列化为字符串 $("#Form").serialize();//name=zhangsan&sex=1&age=20   2.序列化为数组 var formD ...

  8. [JavaScript] - form表单转json的插件

    jquery.serializejson.js 之前好像记录过,做项目又用到了再记下 在页面中引入js后就可以使用了 示例: //点击设置微信信息的form表单提交按钮后,执行wxConfig的con ...

  9. form表单转换为Json字符串数据

    https://github.com/marioizquierdo/jquery.serializeJSON 效果图 加载使用 <script type="text/javascrip ...

随机推荐

  1. php判断终端是手机还是电脑访问网站代码

    ?php function check_wap() { if (isset($_SERVER['HTTP_VIA'])) return true; if (isset($_SERVER['HTTP_X ...

  2. Contset Hunter 1102 高精度求卡特兰数

    用递推的方式写的写挂了,而如果用组合数又不会高精度除法,偶然看到了别人的只用高精度乘低精度求组合数的方法,记录一下 #include<bits/stdc++.h> using namesp ...

  3. winform 公共控件 ListView

    //数据显示,刷新 public void F5() { listView1.Items.Clear(); List<Students> Stu = new StudentsData(). ...

  4. Spring IOC容器解析及实现原理

    最近一段时间,“容器”两个字一直萦绕在我的耳边,甚至是吃饭.睡觉的时候都在我脑子里蹦来蹦去的.随着这些天一次次的交流.讨论,对于容器的理解也逐渐加深.理论上的东西终归要落实到实践,今天就借助sprin ...

  5. php学习笔记-continue和break

    这两个关键字经常被用在循环中,但作用是完全不同的. 在循环中遇到continue这个单词的时候一定要理解为skip,跳过或者略过,啥意思?就是跳过本次循环,后面的循环继续走起来,老铁. break是说 ...

  6. oracle 监听服务OracleOraDb11g_home1TNSListener打开后立马停止错误

    首先我真得吐槽一下,我安装这个破软件感觉真的是把能遇到的错误都遇到一遍了,生气!!!!!!! 关于监听服务OracleOraDb11g_home1TNSListener打开后立马停止这个错误,我的解决 ...

  7. R: 正则表达式

    正则表达式: 例:sub("a","",c("abcd","dcba")):   [1] "bcd" ...

  8. Luogu 1314 [NOIP2011] 聪明的质监员

    二分答案 + 前缀和. 题面中式子的意思是每一个区间$[l, r]$的贡献是这个区间内$w_i \geq W$的个数乘以这些$i$的$v_i$和. 很快发现了答案具有单调性,可以做两遍二分,分别看看小 ...

  9. 数据结构_coprime_sequence(互质序列)

    coprime_sequence(互质序列) 问题描述 顾名思义,互质序列是满足序列元素的 gcd 为 1 的序列.比如[1,2,3],[4,7,8],都是互质序列. [3,6,9]不是互质序列.现在 ...

  10. oracle connect by 递归,反递归,自动补全查询实现

    递归: select *    from t_pams_solution t   start with t.id is null  connect by prior id = t.parent_id  ...