ejs不会在变量中打印新行

时间:2016-09-08 13:53:32

标签: javascript node.js ejs

我在Node.js / MySQL中有一个网络应用程序,用户可以上传他们的故事。他们用HTML textarea标签写。现在,我正在尝试使用ejs将数据库上传到脚本标记,以便我可以进一步“进程”

<script>
	var text = "<%=story.Content%>",
		result = anchorme.js(text);
	document.getElementById('story-content').innerHTML = twemoji.parse(result);
</script>

问题是用户在写入时是否按Enter键开始新行。它会在文本变量中给出一个错误,并且不会打印任何内容,所以如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果您在页面上查看来源以便可以看到浏览器如何接收它,您会看到类似的内容 - 请注意换行符:

    var text = "I am a story over multiple lines
and that's what javascript gets confused about
because it can't figure out where the closing quotes are.

Let's not even go into what could happen when someone uses quotes!"

所以你真的只需要一种方法将故事内容传递给javascript,而不会破坏页面。而不是像这样推出字符串......

var text = "<%=story.Content%>"

...您可以将内容传递给JSON格式的javascript,因为它允许并将换行符转换为\ r \ n并将引号转换为\“等等。请注意使用<%-而不是{{1这是因为您不希望它传递转义的HTML:

<%=

将带有一个很好的转义字符串的对象传递给你的内联脚本,以便进行处理。