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();
    }
      接收数据成功

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

  • 相关阅读:
    哲理故事
    ajaxToolkit发布之后出错!说未能加载文件或程序集!
    一个沉重的教训!!!
    ValidatorCallout真的是太酷了!
    GridView放在UpdatePanle里面模板列取值!
    Prototype学习笔记之-Ajax.Request
    数据分类重排!
    SQL SERVER 2005 sa登录失败!
    flex应该学到什么程度
    jquery dataTable的学习
  • 原文地址:https://www.cnblogs.com/ConfidentLiu/p/10300400.html
Copyright © 2011-2022 走看看