Man*_*shh 2 javascript json ruby-on-rails
我试图解析与json的rails活动记录关系.
jQuery('.user_form').data('mydata', '<%= raw User.all.to_json %>');
var myPersonalData = JSON.parse(jQuery('.user_form').data('mydata'));
Run Code Online (Sandbox Code Playgroud)
这是我的rails对象
'"[{\"id\":1,\"email\":\"1@2.com\",\"created_at\":\"2016-02-24T12:39:29.184Z\",\"updated_at\":\"2016-02-24T12:39:29.184Z\",\"username\":\"xyz's\",\"skypeid\":null},{\"id\":2,\"email\":\"3@2.com\",\"created_at\":\"2016-02-24T12:39:41.455Z\",\"updated_at\":\"2016-02-24T12:39:41.455Z\",\"username\":\"abs's\",\"skypeid\":null}]"'
Run Code Online (Sandbox Code Playgroud)
这个问题是在用户名列中,值包含"'"(撇号),它打破了单引号和双引号的链,因此在从javascript解析它时会抛出错误.
SyntaxError: missing ) after argument list path/to/file:linenumber
Run Code Online (Sandbox Code Playgroud)
这个问题是'<%= raw User.all.to_json%>'它被转换为
' "object_attribut\": \" value_with'apostrophe" '
Run Code Online (Sandbox Code Playgroud)
因此,'逃脱之后的部分.
任何帮助表示赞赏.提前致谢.
小智 5
您应该使用escape_javascript提供的功能ActionView::Helpers::JavaScriptHelper.
你可以在这里阅读它,但基本的是它逃脱回车以及JavaScript段的单引号和双引号.
那么,你最终会得到的是:
jQuery('.user_form').data('mydata', '<%= raw escape_javascript(User.all.to_json) %>');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
833 次 |
| 最近记录: |