2012年10月9日星期二

采用Json字符串,往服务器回传大量富文本数据时,需要注意的地方,最近开发时遇到的问题。

采用Json字符串,往服务器回传大量富文本数据时,需要注意的地方,最近开发时遇到的问题。

json字符串中存在常规的用户输入的字符串,和很多的富文本样式标签(用户不能直接看到,点击富文本编辑器中的html源码按钮能看到),例如下面的:

<p><strong>富文本&lt;&gt;sad&lt;span&gt;adzx我是用户输入</strong></p>

<p><span><span style="font-family:微软雅黑, &#39;microsoft yahei&#39;;">富文本&lt;&gt;sad&lt;span&gt;adzx我是用户输入</span><br /></span></p>

例如存在这种情况,需要把上面的这段字符串通过一个json格式,post到服务器端,假设这段字符串被赋给变量a :

post的参数的结构是这样的:

{ "params": { "content": a }}

有个前提是,往后端post的文本内容,是需要包含富文本样式的,这也就是为什么要使用富文本编辑器的目的。

可以注意到,上面的字符串中,黑色加粗部分,富文本编辑器会自动进行encodeHTML操作,也就是常规的用户输入的字符串,而红色细字部分是属于富文本样式标签部分。

样例中,富文本区域包含:<span style="font-family:微软雅黑, &#39;microsoft yahei&#39;;">这种字符串,由于采用的json格式向后端post数据,所以需要注意转义这里面的双引号",否则会引起后端解析json出错,所以做了一下转义,把单个双引号变成了 \\\" 这种形式(因为还涉及到encodeURI和decodeURI的操作)。

同时,用户也可能会输入单个的或多个的\反斜杠(转义符),所以又对它做了同样的转义处理,把单个的反斜杠,变成了 \\\\ 这种形式。

归根到底是采用了json这种方式来向服务器post大量的数据(富文本数据),所以涉及到双引号和反斜杠这两个特殊字符的处理。


TAG: