我在APP A中有以下富文本:
一个漂亮的篮球
在index.html.erb中,可以通过product.body_html
访问此富文本,我将其加载到名为myProduct
的Javascript对象中:
var myProduct= new Object();
myProduct.desc ='<%= JSON.generate(raw(product.body_html), quirks_mode: true) %>';
然后我通过POST将此对象发送到APP B中的API,使用Javascript:
var url = appBURL + "/myapi/method";
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(myProduct),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){
// data.desc should contain the same rich text
$(".myDiv").html(data.desc);
}
});
我在应用A中得到了回复data.desc
应该包含相同的富文本。但是当我在data.desc
内显示<div>
时,我在屏幕上看到的是
"<p>A nice basketball</p> <ul> <li>because I say so</li> <li>because my mother says so</li> <li>because my dog says so</li> </ul>"
我实际插入的<div>
(即data.desc
的内容)就是这个
"<p>A nice basketball</p>
<ul>
<li>because I say so</li>
<li>because my mother says so</li>
<li>kjh</li>
</ul>"
APP A中的客户端正在添加这些引号。为什么呢?
如果我在APP A中添加如下描述:
myProduct.desc ='<%= raw(product.body_html) %>';
然后它适用于普通文本(并且它不会添加引号),但是只要我有富文本,它就会在运行javascript时产生语法错误。
答案 0 :(得分:1)
在APP B中渲染文本时,请按以下方式渲染:
(CGI::unescapeHTML data.desc).html_safe