• 前后端分离(三)


    一、关于前后端分离采用GET和POST传输JSON字符串的问题

    1、GET传输

    采用GET方法传输JSON字符串相当于在URL中传输中文所以需要对要传输的JSON进行编码和解码的工作,具体的过程如下:

                    //获取数据
                    var obj = new Object();
                    obj.province = document.getElementById("province").value;
                    obj.city = document.getElementById("city").value;
                    var s = JSON.stringify(obj);
                    //s = "&s="+s;
                    s = encodeURI(s);
                    s = encodeURI(s); //两次编码

    可以看到在前端使用encodeURL()对JSON字符串进行了两次编码

                String s=context.Request.QueryString["s"];
                //解码
                s = System.Web.HttpUtility.UrlDecode(s);
                //将json字符串转换为对象
                JObject jObject = JObject.Parse(s);
          
                //接收province参数
                String p = (string)jObject["province"];
    
                //接收city参数
                String c = (string)jObject["city"];


    可以看到在后台使用System.Web.HttpUtility.UrlDecode()进行了一次解码

    2、POST传输

    采用POST传输的时候把要传输的数据在send(s)的时候传输出去

                    var s = JSON.stringify(obj);
                    //s = "&s="+s;
                    //s = encodeURI(s);
                    //s = encodeURI(s); //两次编码
                    //发送数据
                    //http.open("GET", "server.ashx?&s=" + s + "&rnd=" + Math.random().toString(), true);
                    http.open("POST", "server.ashx?&rnd=" + Math.random().toString(), true);
                    //设置数据格式
                    http.setRequestHeader("content-Type", "application/json");
                    //http.send(null);
                    http.send(s);

    可以看在前端不用编码

                //接收s
                //String s=context.Request.QueryString["s"];
                context.Response.ContentType = "application/json";
                context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                String s;
                using (var reader = new System.IO.StreamReader(context.Request.InputStream))
                {
                    s = reader.ReadToEnd();
                    if (!string.IsNullOrEmpty(s))
                    {
                        //业务处理
                    }
                }
                //s = System.Web.HttpUtility.UrlDecode(s);
                //将json字符串转换为对象
                //JObject jObject = (JObject)JsonConvert.DeserializeObject(s);
                //JArray jar = JArray.Parse(jObject["RTDataSets"].ToString());
                JObject jObject = JObject.Parse(s);
          
                //接收province参数
                String p = (string)jObject["province"];
    
                //接收city参数
                String c = (string)jObject["city"];


    在后台可以看到通过流的形式接收数据

    二、关于前后端分离关于JSON的知识

    {“province”:"广东","city":"深圳"}

    它表示一个对象,对象中有两个属性,一个属性是province,值为“广东”,另外一个属性是city,值为“深圳”。

    1、普通对象

    JSON格式中规定一个对象以“{”开始,以“}”结束,对象内部是该对象的每个元素,每个元素是一个“名称:值”对,每个“名称”后跟一个“:”,名称用双引号引起来,如果值是字符串也要用双引号引起来。如果对象有多个元素,那么


  • 相关阅读:
    ThreadLocal的设计理念与作用
    生产者消费者模式
    Java 线程池
    对象锁(包括方法锁)和类锁
    C++入门经典-例2.12-求逻辑表达式的值
    C++入门经典-例2.11-流输出小数控制
    C++入门经典-例2.10-控制输出精确度
    C++入门经典-例2.9-输出十六进制数以及大写的十六进制数
    C++入门经典-例2.8-输出整数,控制打印格式
    C++入门经典-例2.7-控制cout打印格式程序
  • 原文地址:https://www.cnblogs.com/haxianhe/p/9271209.html
Copyright © 2020-2023  润新知