前後端分離(三)

3176 ワード

一、前後端分離について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文字列を2回エンコードしていることがわかります
            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値、深セン値の2つのプロパティがあります.
1、一般オブジェクト
JSON形式では、1つのオブジェクトを「{」で始まり、「}」で終わるように規定されています.オブジェクトの内部はそのオブジェクトの各要素で、各要素は「名前:値」のペアで、各「名前」の後に「:」が付いています.名前は二重引用符で、値が文字列であれば二重引用符で囲まれます.オブジェクトに複数の要素がある場合、