先後端分離(三)

1、關於先後端分離採用GET和POST傳輸JSON字符串的問題html

一、GET傳輸前端

採用GET方法傳輸JSON字符串至關於在URL中傳輸中文因此須要對要傳輸的JSON進行編碼和解碼的工做,具體的過程以下: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()進行了一次解碼app

二、POST傳輸前後端分離

採用POST傳輸的時候把要傳輸的數據在send(s)的時候傳輸出去dom

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"];


在後臺能夠看到經過流的形式接收數據code

2、關於先後端分離關於JSON的知識server

{「province」:"廣東","city":"深圳"}

它表示一個對象,對象中有兩個屬性,一個屬性是province,值爲「廣東」,另一個屬性是city,值爲「深圳」。

一、普通對象

JSON格式中規定一個對象以「{」開始,以「}」結束,對象內部是該對象的每一個元素,每一個元素是一個「名稱:值」對,每一個「名稱」後跟一個「:」,名稱用雙引號引發來,若是值是字符串也要用雙引號引發來。若是對象有多個元素,那麼

相關文章
相關標籤/搜索