javascript - 来自 Rails 的多行 JSON 响应未正确解析

标签 javascript jquery ruby-on-rails json

我在 Rails 中有一个简单的应用程序,它应该用这个 show.js.erb 响应 json,

 { "opening": "<%= @frame.opening %>", "closing": "<%= @frame.closing %>"}

问题是,当 @frame.opening 是多行时,jquery 中不会将其解析为对象(而是字符串),

错误是

"parsererror" SyntaxError: Unexpected token

请注意,如果我在 @frame.opening 文本中使用\n ,就不会有问题,只有当我在字符串中使用 Enter 键时,它才会中断。 如果需要更多信息,请告诉我。

最佳答案

不要手动编码 JSON!这很难做到(正如您所注意到的),而且,让 Rails 为您做这件事要简单得多。试试这个:

{ opening: @frame.opening, closing: @frame.closing }.to_json

to_json 将输出格式正确的 JSON 字符串供您使用,处理换行符等。例如:

pry(main)> hash = { foo: "asdfasdf
pry(main)*
pry(main)* asdfsf" }
pry(main)> puts hash.to_json
{"foo":"asdfasdf\n\nasdfsf"}

OP编辑:因为我假设更多的人会遇到这个问题,所以我必须添加.html_safe,因为ERB正在添加一些东西以使其适用于HTML,但它是一个JSON。

我不应该为此使用 View ,但无论如何,它应该看起来像这样,

 <%= {}.to_json.html_safe %>

关于javascript - 来自 Rails 的多行 JSON 响应未正确解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31703697/

相关文章:

javascript - 是否有基于页面加载内容的 textarea "autofit"高度?

javascript - 列表上的自动换行

Javascript 井字游戏 : how to alert user that he won?

jQuery 如何在表单提交上查找按钮值

javascript - 如何使用 jQuery 触发同一容器内的元素

ruby-on-rails - 部署到 heroku 的 Ruby on Rails 应用程序显示 "We' 抱歉,但出了点问题”

javascript - 如何让两个不相关的 React 组件一起工作?

javascript - jQuery 星级评定插件无法识别 {split :4}

css - ruby on rails CSS

ruby-on-rails - Rails,获取模型中的资源路径