【问题标题】:JSON response with multiline from rails is not parsed correctly来自 rails 的多行 JSON 响应未正确解析
【发布时间】:2015-07-29 14:40:20
【问题描述】:

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

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

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

错误是

"parsererror" SyntaxError: Unexpected token

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

【问题讨论】:

  • 应该是show.json.erb,而不是show.js.erb

标签: javascript jquery ruby-on-rails json


【解决方案1】:

不要手动编码 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。

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

 <%= {}.to_json.html_safe %>

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多