【问题标题】:Sending rich text over POST in rails app using Javascript使用Javascript在rails应用程序中通过POST发送富文本
【发布时间】:2014-04-08 02:44:10
【问题描述】:

我在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) %>';

然后我使用 Javascript 通过 POST 将此对象发送到我在 APP B 中的 API:

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应该包含相同的富文本。但是当我在&lt;div&gt; 中显示data.desc 时,我看到屏幕上打印的是这个

"<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>" 

而我实际上在&lt;div&gt; 中插入的内容(即data.desc 的内容)是这样的

"&lt;p&gt;A nice basketball&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;because I say so&lt;/li&gt;
&lt;li&gt;because my mother says so&lt;/li&gt;
&lt;li&gt;kjh&lt;/li&gt;
&lt;/ul&gt;"

APP A 中的客户端正在添加这些引号。为什么?

如果我在APP A中添加这样的描述:

myProduct.desc ='<%= raw(product.body_html) %>';

然后它适用于普通文本(并且它不添加引号),但是一旦我有富文本,它就会在运行 javascript 时产生语法错误。

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby json


    【解决方案1】:

    在APP B中渲染文本时,渲染如下:

    (CGI::unescapeHTML data.desc).html_safe
    

    【讨论】:

    • 没错!问题是我需要在 APP B 中取消转义 HTML。我在我的 Java servlet 中使用了StringEscapeUtils.unescapeHtml(data.desc)。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多