后台接口返回的\n在前端不会换行,而是展示成字符串

如题。

搜索同类问题说,后台接口会把\n变成\\n返回,需要使用str.replace('\\\\n', '\n')替换。

但是,在我这里,接口返回给我的就是\n并没有替换成\\n,但是依然并不会显示换行。当我使用str.replace('\\n', '\n')替换后却可以显示换行了。

这是为什么呢,str.replace('\\n', '\n')按道理来说并没有改变字符串

阅读 30.7k
5 个回答

我明白了,后台传过来的数据是会被Json.parse处理的,转换的时候,\\n会被转义成字符串\n,字符串的\n和换行符是不同的所以会显示成\n而不换行

给容器加上这个试试white-space: pre-line;,相关文档在这里

一.替换\n

var str = str1.replace(/\\n/gm,"<br/>");

二.绑定到dom

<span class="content span_left_down" style="" v-html="item.message"></span>

可以试下,不管是框架还是原生都有类似的实现方式

<pre>包起来试试

他本就是个字符串,不会解析的,如果解析了那就可能被注入了,要么你自己替换为br,要么转换成html格式,比如pre标签

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题