前后端分离(三)

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

1、GET传输

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

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //获取数据  
  2. var obj = new Object();  
  3. obj.province = document.getElementById("province").value;  
  4. obj.city = document.getElementById("city").value;  
  5. var s = JSON.stringify(obj);  
  6. //s = "&s="+s;  
  7. s = encodeURI(s);  
  8. s = encodeURI(s); //两次编码  

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

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. String s=context.Request.QueryString["s"];  
  2. //解码  
  3. s = System.Web.HttpUtility.UrlDecode(s);  
  4. //将json字符串转换为对象  
  5. JObject jObject = JObject.Parse(s);  
  6.   
  7. //接收province参数  
  8. String p = (string)jObject["province"];  
  9.   
  10. //接收city参数  
  11. String c = (string)jObject["city"];  


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

2、POST传输

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

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. var s = JSON.stringify(obj);  
  2. //s = "&s="+s;  
  3. //s = encodeURI(s);  
  4. //s = encodeURI(s); //两次编码  
  5. //发送数据  
  6. //http.open("GET", "server.ashx?&s=" + s + "&rnd=" + Math.random().toString(), true);  
  7. http.open("POST", "server.ashx?&rnd=" + Math.random().toString(), true);  
  8. //设置数据格式  
  9. http.setRequestHeader("content-Type", "application/json");  
  10. //http.send(null);  
  11. http.send(s);  

可以看在前端不用编码

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //接收s  
  2. //String s=context.Request.QueryString["s"];  
  3. context.Response.ContentType = "application/json";  
  4. context.Response.Cache.SetCacheability(HttpCacheability.NoCache);  
  5. String s;  
  6. using (var reader = new System.IO.StreamReader(context.Request.InputStream))  
  7. {  
  8.     s = reader.ReadToEnd();  
  9.     if (!string.IsNullOrEmpty(s))  
  10.     {  
  11.         //业务处理  
  12.     }  
  13. }  
  14. //s = System.Web.HttpUtility.UrlDecode(s);  
  15. //将json字符串转换为对象  
  16. //JObject jObject = (JObject)JsonConvert.DeserializeObject(s);  
  17. //JArray jar = JArray.Parse(jObject["RTDataSets"].ToString());  
  18. JObject jObject = JObject.Parse(s);  
  19.   
  20. //接收province参数  
  21. String p = (string)jObject["province"];  
  22.   
  23. //接收city参数  
  24. String c = (string)jObject["city"];  


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

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

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

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

1、普通对象

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



来源:

http://blog.csdn.net/finish_dream/article/details/51353823

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值