zoukankan      html  css  js  c++  java
  • 前后端分离(三)

    一、关于前后端分离采用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格式中规定一个对象以“{”开始,以“}”结束,对象内部是该对象的每个元素,每个元素是一个“名称:值”对,每个“名称”后跟一个“:”,名称用双引号引起来,如果值是字符串也要用双引号引起来。如果对象有多个元素,那么


  • 相关阅读:
    poj2679
    poj2709
    poj1521
    poj2054
    静脉曲张病案
    眩晕耳鸣病案
    声嘶治验
    甘露消毒丹治疗高热不退一例
    黄芩汤加减治疗腹痛一例
    自残症治愈案
  • 原文地址:https://www.cnblogs.com/haxianhe/p/9271209.html
Copyright © 2011-2022 走看看