我在 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/