前后端分离(三)

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

时间: 2024-08-01 23:11:08

前后端分离(三)的相关文章

[转]从MVC到前后端分离

从MVC到前后端分离 来源:csdn 发布时间:2015-10-26 阅读次数:1680 1. 理解MVC MVC是一种经典的设计模式,全名为Model-View-Controller,即模型-视图-控制器. 其中,模型是用于封装数据的载体,例如,在Java中一般通过一个简单的POJO(Plain Ordinary Java Object)来表示,其本质是一个普通的Java Bean,包含一系列的成员变量及其getter/setter方法.对于视图而言,它更加偏重于展现,也就是说,视图决定了界面

运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法

运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法 问题一: SyntaxError: missing ) after argument list in .....\views\user\index.html while compiling ejs. 语法错误:失去右括号)在参数列表后面,在.....\views\user\index.html(在这个路径中的index.html)中当编译ejs时. 分析:这个时候应该是模板引擎ejs出现问题,但是ejs已经是一个写好

谈谈渲染,玩玩nginx——前后端分离,转发请求到Tomcat的尝试

一.谈谈"渲染" 相信好多人都挺听过"渲染"这个词,但不清楚它是什么意思?前端开发以为这是后端的活儿,后端开发以为是前端的事儿,推着推着就不了了之.其实渲染很简单,不说概念,直接举例: 1. 后端渲染:以JSP为例,可以分成三步 a.编写标签或Java代码(可以称之为模板) b.在JSP编译阶段被转换成Servlet编译为Servlet Class c.执行编译后的代码,将响应(模板执行结果)返回给页面 优势:减少前端工作,前端只需要设计纯页面,其他的都由后端来做:

从 MVC 到前后端分离——转自:OSChina 黄勇

转自:OSChina 黄勇 从 MVC 到前后端分离 1 理解 MVC MVC 是一种经典的设计模式,全名为 Model-View-Controller,即 模型-视图-控制器. 其中,模型 是用于封装数据的载体,例如,在 Java 中一般通过一个简单的 POJO(Plain Ordinary Java Object)来表示,其本质是一个普通的 Java Bean,包含一系列的成员变量及其 getter/setter 方法.对于 视图 而言,它更加偏重于展现,也就是说,视图决定了界面到底长什么样

关于大型网站技术演进的思考(十五)--网站静态化处理—前后端分离—中(7)

上篇里我讲到了一种前后端分离方案,这套方案放到服务端开发人员面前比放在web前端开发人员面前或许得到的掌声会更多,我想很多资深前端工程师看到这样的技术方案可能会有种说不出来的矛盾心情,当我的工作逐渐走向越来越专业化的前端开发后,我就时常被这套前后端分离方案所困惑,最近我终于明白了这个困惑的本源在哪里了,那就是这套前后端分离方案其实是服务端驱动的前后端分离方案,它的实现手段又是从服务端的MVC架构体系演化而来,因此该方案最大的问题就是它并没有从根本上改变web前端从属于服务端的被动局面.那么问题来

关于大型网站技术演进的思考(十四)--网站静态化处理—前后端分离—上(6)

前文讲到了CSI技术,这就说明网站静态化技术的讲述已经推进到了浏览器端了即真正到了web前端的范畴了,而时下web前端技术的前沿之一就是前后端分离技术了,那么在这里网站静态化技术和前后端分离技术产生了交集,所以今天我将讨论下前后端分离技术,前后端分离技术讨论完后,下一篇文章我将会以网站静态化技术的角度回过头来重新审视下前后端分离技术,希望通过这种审视来加深我们对两套技术的理解. 前后端分离技术我个人认为是web前端被专业化以后的必由之路,而nodejs的出现是前后端分离技术的一个强兴的催化剂,原

前后端分离及React的一些研究

前言 在对英才网企业线前端不断的完善过程中,我们尝试进行了前后端分离,引入Node环境.以及在使用React的过程中,自行开发DOM渲染框架,解决React兼容低版本IE的问题,在这个过程中,我们有了一些经验和体会,希望本文对您有所帮助. 为什么前后端分离 原有架构下,后端系统基于Java语言实现,通过Velocity模板实现服务器端渲染,前端同学维护静态资源,在维护页面状态时,还需要模板和脚本互传参数,模板中还会有很多UI逻辑,等等,前后端耦合很深,这种模式下开发效率非常低,联调成本非常高,同

分享一个前后端分离方案源码-前端angularjs+requirejs+dhtmlx 后端asp.net webapi

一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家.关于前后端分离这个话题大家也谈了很久了,希望我这个实践能对大家有点点帮助,演示和源码都贴在后面. 二.技术架构 这两年angularjs和reactjs算是比较火的项目了,而我选择angularjs并不是因为它火,而是因它的模块化.双向数据绑定.注入.指令等都是非常适合架构较复杂的前端应用,而且文档是相当的全,碰到问题基本上可以在网上都找到答案.所以前端基本思路就以angularjs为主.代码模块化,通过requir

第一步:类似前后端分离的基础框架思路

整个架构部署模式采用简单三段式实现:前端站点+后端服务站点+多构件服务支持,两个站点设计均支持内部调用或远程调用,同时支持反向代理与集群实现.由于是企业级互联网私有云应用,就没有考虑Vue.js+node.js来实现真的前后端分离,关键是考虑后期的二次开发及实施维护成本.但对于公有云部分则使用Vue.js+node.js来进行开发与部署. 前端:jquery+bootstrap+bootstrap-table+jquery组件+App.js(基于框架封装的交互类库,包含多个子类) 后端:ASP.