CGI.unescape和CGI.unescapeHTML什么都不做

时间:2013-11-29 15:09:32

标签: javascript ruby-on-rails ruby

我收到一个字符串作为对get请求的响应

{"revision"=>"r2407", "full_version"=>"2.5 [r2407]", "full_name"=>" [r2407]", "version"=>"2.5"}

在js文件中:

$('.output').text('<%=CGI.unescape(@response.to_s)%>')

我仍然使用&quot和东西获得相同的字符串。我也尝试过JS unescape(),它也没有做任何事情。怎么了?

2 个答案:

答案 0 :(得分:0)

CGI.escapeCGI.unescape用于处理网址编码的字符串。

CGI.escape('&')
# => "%26"
CGI.unescape('%26')
# => "&"

改为使用CGI::unescape_html

CGI.unescape_html('&gt;')
# => ">"

body = '{&quot;revision&quot;=&gt;&quot;r2407&quot;, &quot;full_version&quot;=&gt;&quot;2.5 [r2407]&quot;, &quot;full_name&quot;=&gt;&quot; [r2407]&quot;, &quot;version&quot;=&gt;&quot;2.5&quot;}'
CGI.unescape_html(body)
# => {"revision"=>"r2407", "full_version"=>"2.5 [r2407]", "full_name"=>" [r2407]", "version"=>"2.5"}

答案 1 :(得分:0)

我认为您首先需要使用CGI.unescape_html从响应中取消HTML,然后使用j将其转义为JavaScript:

$('.output').text('<%=j CGI.unescape_html(@response.to_s)%>')