• Json 备忘录


    最近项目上的一个页面比较复杂,多次用到Json提交数据,顺便记录下来,以便以后查询.

    js代码:

    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
        <script src="Scripts/json2.js" type="text/javascript"></script>
        <title></title>
        <script type="text/javascript">
            function onSubmit() {
                var employee = {
                    Name: "chenxizhang",
                    Country: "China",
                    Orders: [
                        { OrderID: 10248 },
                        { OrderID: 10249 }
                    ]
                };
                //debugger;
                var testArrayJson = [];
                var testJson;
                var table = $("#tableJson")[0];
                for (var i = 0; i < table.rows.length; i++) {
                    var temp = { //在此生成Json对象
                        Name: table.rows[i].cells[0].innerText,
                        Country: table.rows[i].cells[1].innerText,
                        Orders: [
                            { OrderID: table.rows[i].cells[2].innerText }
                        ]
                    };
                    testJson += JSON.stringify(temp) + ","; //把所有Json对象转成字符串
                }
                testJson = "[" + testJson.substring(0, testJson.length - 1).replace('undefined', '') + "]";//组合json对象
                testArrayJson = eval('(' + testJson + ')'); //使用Eval转换为Json对象

                //发送POST请求,数据也是json格式。但数值部分需要转换为字符串
                $.post("Ajax.aspx", { data: JSON.stringify(testArrayJson) }, function (result) {
                    //alert(result);
                    var r = JSON.parse(result);
                    alert(r.Message);
                });

            }
        </script>

    页面代码:

    <input type="button" value="Submit" onclick="onSubmit();" />
        <table id="tableJson">
            <tr>
                <td>
                    test1
                </td>
                <td>
                    China
                </td>
                <td>
                    123
                </td>
            </tr>
            <tr>
                <td>
                    test2
                </td>
                <td>
                    China
                </td>
                <td>
                    456
                </td>
            </tr>
            <tr>
                <td>
                    test3
                </td>
                <td>
                    China
                </td>
                <td>
                    789
                </td>
            </tr>
        </table>

    本实例是用js遍历table 取出每行的属性或列值.组成json对象,发送到Ajax.aspx页面进行处理.

    Ajax.aspx 处理部分.(页面部分除了第一行服务器标记外一定要删除)

    protected void Page_Load(object sender, EventArgs e)
            {
                try
                {
                    var ser = new DataContractJsonSerializer(typeof(Employee[]));
                    var data = Request["data"];
                    var ms = new MemoryStream(Encoding.UTF8.GetBytes(data));
                    var emp = (Employee[])ser.ReadObject(ms);
                    ms.Close();
                    //此时已经得到了相应的Employee实例,可以进行服务器端的处理

                    var ser2 = new DataContractJsonSerializer(typeof(ActionResult));
                    var ms2 = new MemoryStream();
                    var result = new ActionResult() { Code = 200, Message = emp[0].Name+ emp[0].Country };
                    ser2.WriteObject(ms2, result);
                    ms2.Position = 0;
                    var buffer = new byte[ms2.Length];
                    ms2.Read(buffer, 0, buffer.Length);
                    ms2.Close();
                    Response.Write(Encoding.UTF8.GetString(buffer));
                }

    catch()

    {

    }

    }

    以下是定义的服务器端实体类:

    public class Employee
        {
            public string Name { get; set; }

            public string Country { get; set; }

            public OrderItem[] Orders { get; set; }

        }
        public class OrderItem
        {
            public int OrderID { get; set; }
        } 
        public class ActionResult
        {
            public int Code { get; set; }
            public string Message { get; set; }

        }

  • 相关阅读:
    20201216-1 文件读与写详解3
    20201214-4 文件读与写详解2
    20201214-3 文件读与写详解1
    20201214 集合及其运算
    3月17日:毕业设计计划
    3月16日:毕业设计计划
    3月15日:毕业设计计划
    3月14日:毕业设计计划
    3月13日:毕业设计计划
    3月12日:毕业设计计划
  • 原文地址:https://www.cnblogs.com/wuhen/p/1722193.html
Copyright © 2020-2023  润新知