javascript - 尴尬的逃脱角色

标签 javascript node.js mongoose escaping ejs

在尝试console.log字符串时,我遇到了一个相当烦人的问题。我将字符串 2^{\\frac{1}{2}}x=1 存储在 Node.js 数据库中,但输出时给出 2^{rac{1}{2 }}x=1。我预测了 \f 转义字符存在问题,因此我添加了第二个 \ 来转义该问题。但问题仍然存在,我对如何解决它感到困惑。

当查看 Mongoose 调试输出时,它清楚地将其正确存储在数据中: enter image description here

它的分配方式如下:

contentHolder = "<%= testData.topics[i].questions[t].methods[p][0].content %>";

但是当我运行这一行时:

console.log(contentHolder);

我明白了:

2^{rac{1}{2}}x=1

最佳答案

如果您在网络浏览器中查看“源代码”,我想您会看到以下内容:

contentHolder = "<%= testData.topics[i].questions[t].methods[p][0].content %>";

将会生成这个:

contentHolder = "2^{\frac{1}{2}}x=1";

当解释 JS 字符串文字时,\f 将被转换为换页符,这显然不是您想要的。

您可以尝试多种方法来修复转义,但我想我只使用 JSON.stringify:

contentHolder = <%- JSON.stringify(testData.topics[i].questions[t].methods[p][0].content) %>;

可能在一些边缘情况下,这仍然不能完全正确地转义,但除非您输出用户输入的值,否则这不太可能成为问题。

关于javascript - 尴尬的逃脱角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46620563/

相关文章:

javascript - 无法读取未定义、按钮和选项卡的属性 'style'

javascript - 浏览器在使用 js 延迟加载时下载两倍的图像

javascript - Socket.io 无法将数据发送到客户的唯一房间

javascript - 合并数组数组 | Node JS

node.js - 关于在 Meteor 包中使用 npm 模块

node.js - 将 createBy 字段添加到 keystone.js 中的 User 模型中

javascript - 用 typescript 中的子文档描述 Mongoose 模型

javascript - 上传的文件大小问题(HTML5、Javascript、PHP)

javascript - 将 SVG 曲线拟合为多项式

javascript - 插入数组?