web工程前后台换行符传递与转义
2017-11-08 18:02
751 查看
问题描述
该问题源自于一个数据展示问题, 后台文本中的换行符\n通过ajax请求反馈给前台, 前台解析json失败, 导致无法执行ajax的回调函数, 前台解析报错为:
Uncaught SyntaxError: Unexpected token in JSON at position 101
问题分析
产生该问题的表象为前台js以json格式解析返回串, 解析到转义符\, 但无法识别跟随的
n, 从而认为是返回数据问题而报错
但该问题并非到此为止, 由于前台html中换行符不同于后台
\n, 仍需要在前台接收信息后做文本替换, 再渲染到对应的页面元素中
解决方案
后端使用groovy实现, 用来将实际内容中的换行符改为\\n, 同时将其他
\转义符替换为斜杠
/
注意replace中一个反斜杠文本
\要用四个反斜杠
\\\\表示, 原因是需要经过java和正则两个步骤的转义, 所以需要2*2=4个反斜杠, 同理, 想替换为
\\n就需要8个反斜杠…
def sql = DB.getSql(); def jsonStr = JSONObject.toJSONString(sql.rows(reaSql)); jsonStr.replaceAll("\\\\","/").replaceAll("/n","\\\\\\\\n");
前端接收到响应数据解析json时, 会把文本中的
\\n转义为
\n, 所以针对前端的转义工作, 就需要将目标文本中的
\n替换为
<br>
这里replace同样要经过js和正则两个步骤转义, 需要4个反斜杠表示, 具体实现如下
var reg = new RegExp("\\\\n", "gmi"); var rep = data.eventMessage.replace(reg, "<br>"); $(".eventMessage").html(rep);
相关文章推荐
- javascript 后台与前台传递json 需要注意换行符 不然报错
- iOS中使用NSJSONSerialization转换成json字符串后传递到后台的引号转义处理
- input向后台传递值中含有括号
- thinkphp中的Ueditor的使用, 以及如何传递编辑器内容到后台?
- HTML接收后台参数,通过JS传递给Bootstrap模态框
- js获取后台传递的数组
- Struts2从后台传递数据到前台的主要方法和流程
- jQuery接受后台传递的List的实例详解
- 前端与后台之间的数据传递(3-1)
- 页面传递多条参数到后台
- jquery ajax 向后台传递数组参数示例
- spring-mvc ajax传递用户对象到后台
- Spring MVC前后台传递JSON
- Springmvc 前台传递参数到后台需要数据绑定
- 数据传递---前台传数据到后台action的三种方法
- 我的尝试:如何启动多线程,后台线程如何向主线程传递数据!
- java后台传递json数据到前端并渲染react组件(react+struts2)
- ASP.NET MVC 后台传递对象到页面
- android webview 开发浏览器壳子后台向前台传递值
- 以json 传递整行对象到后台