js Form表單轉json格式,及后台接收(多種方法)


轉載: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();
}
  接收數據成功

當然這幾種方式都可以傳遞數據,選擇那種就看個人的需要了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM