为什么在视图中解析时,我的嵌入式ruby json字符串用html实体编码
Why is my embedded ruby json string encoded with html entities when parsed in the view?
我创建了一个rails操作,它向服务发出GET请求,然后将响应作为@job_data传递给视图。代码在检索响应时工作良好,并且我已经验证了json对象看起来是正确的。
def show
@url = URI.parse(@@jobs_base_url + "/" + params[:id] + "?TestMode=true")
req = Net::HTTP::Get.new(@url.to_s)
res = Net::HTTP.start(@url.host, @url.port) {|http|
http.request(req)
}
@job_data = HTMLEntities.new.decode res.body
end
然而,我试图做一点javascript来操纵DOM元素使用这个json对象。我正试图将脚本插入html中,用json对象做一些非常基本的事情,但似乎无法让它正确传递:
<script type="text/javascript" charset="utf-8">
$(function() {
var $data = <%= @job_data %>;
$('#jobtable').append($data.Id);
当我调试页面时,我看到字符串中的所有实体都被编码了(例如"而不是引号)。我试着用HTMLEntities去实体化字符串,就像上面的代码一样,但是它没有效果,就像我把@job_data设置为:
一样。@job_data = res.body
谁能解释编码发生在哪里,我如何解决这个问题?是操作问题还是视图中的javascript问题?什么是首选的方式来传递json字符串/对象从一个动作响应到视图中的javascript ?
已经回答了:Ruby json gem正在编码html实体
技巧是在视图的嵌入式ruby中使用raw
来避免编码:
var $data = <%= raw @job_data %>;
相关文章:
- 如何使用JSON字符串中的jQuery填充下拉框
- Json字符串可以'当字符串末尾有“'时,t解码;
- 使用JSON文件中的变量(字符串)填充文本区域
- 将JSON转换为typescript中的字符串数组
- jquery从2个json字符串构建一个复选框表单
- RegEx只匹配JSON字符串中最里面的数组
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 通过字符串获取JSON对象
- 获取JSON并使用Javascript解析为字符串
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- javascript数组到字符串JSON
- 角度拆分字符串 json
- 跨域 AJAX 调用返回字符串 JSON,而不是 JSON 对象
- 如何在js或jQuery中获取长度字符串json
- 字符串JSON引用名称,而不是被引用的对象
- 子字符串JSON键
- 将字符串JSON转换为多维JavaScript数组
- 字符串json具有空值
- 将html字符串(json表示)转换为实际的javascript对象
- PHP 存储字符串 JSON 与 JavaScript 不同