有趣的问题:localStorage与MongoDB

1 投票
2 回答
1089 浏览
提问于 2025-04-17 05:33

我遇到了一个奇怪的问题。我从一个可以编辑的div中读取HTML内容,然后发送一个AJAX请求到我的后台,把这个HTML保存到mongodb数据库里,同时我也把完全相同的HTML保存到localStorage中。

结果你猜怎么着?当我稍后再加载这些文本时,localStorage里的内容显示得很好,但从数据库里取出来的数据却变成了满是&nbsp和<div>的文本。难道MongoDB在保存数据之前对它做了什么处理吗?

2 个回答

-1

这和MongoDB没关系,问题出在AJAX调用上。

AJAX调用返回的字符串会被转换成字符实体,比如会变成像'<'这样的字符。如果不处理这些字符,它们会搞坏你的网页结构。你只需要把这些字符转换回来就行了。

2

听起来从服务器返回的文本是经过HTML编码的。你可以通过查看MongoDB中的实际记录来判断这个值在MongoDB中是否已经编码,或者是在发送响应之前才编码的。

处理这些编码数据有一个简单的方法:

var decodedData = $("<div />").html(encodedData).text();

如果不使用jQuery,这种方法的逻辑是即时生成的:

var el = document.createElement("div");
el.innerHTML = encodedData; //shows text that is looks to user like the HTML
var decodedData = el.firstChild.nodeValue; //text node value to use as HTML later

撰写回答