zoukankan      html  css  js  c++  java
  • 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();
    }
      接收数据成功

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

  • 相关阅读:
    Qt计算器开发(三):执行效果及项目总结
    [HNOI2019]校园旅行
    How to fix nuget Unrecognized license type MIT when pack
    How to fix nuget Unrecognized license type MIT when pack
    git 通过 SublimeMerge 处理冲突
    git 通过 SublimeMerge 处理冲突
    git 上传当前分支
    git 上传当前分支
    gif 格式
    gif 格式
  • 原文地址:https://www.cnblogs.com/ConfidentLiu/p/10300400.html
Copyright © 2011-2022 走看看