Javascript 使用单引号转义(撇号)将活动记录对象解析为json
我试图解析rails活动记录与json的关系Javascript 使用单引号转义(撇号)将活动记录对象解析为json,javascript,ruby-on-rails,json,Javascript,Ruby On Rails,Json,我试图解析rails活动记录与json的关系 jQuery('.user_form').data('mydata', '<%= raw User.all.to_json %>'); var myPersonalData = JSON.parse(jQuery('.user_form').data('mydata')); 问题在于用户名列中的值包含“'”(撇号),它会打断单引号和双引号的链,因此在从javascript解析时会抛出错误 SyntaxError: missing ) a
jQuery('.user_form').data('mydata', '<%= raw User.all.to_json %>');
var myPersonalData = JSON.parse(jQuery('.user_form').data('mydata'));
问题在于用户名列中的值包含“'”(撇号),它会打断单引号和双引号的链,因此在从javascript解析时会抛出错误
SyntaxError: missing ) after argument list path/to/file:linenumber
这方面的问题在于“”
它被转换成
' "object_attribut\": \" value_with'apostrophe" '
因此,'之后的部分被转义
感谢您的帮助。提前感谢。您应该使用
ActionView::Helpers::JavaScriptHelper
中提供的escape\u javascript
功能
您可以阅读有关它的内容,但最基本的是它逃避了JavaScript段的回车和单引号和双引号
所以,你最终会得到的是:
jQuery('.user_form').data('mydata', '<%= raw escape_javascript(User.all.to_json) %>');
jQuery('.user_form').data('mydata','');
通常,每当我们在ruby中将哈希转换为json时,它都会试图通过产生解析错误来转义引号。解决这一问题的一种方法是打印散列并调用to_json方法
<%= (puts User.all).to_json %>
点击阅读更多信息。你可以用这个来代替a,
@Sahil,为什么我们需要来a
这里,根据问题,我想我们需要将json
发送到javascript
。很抱歉,它提供了2D数组。没问题。ERB也有一些快捷方式:您也可以改为写:'
。额外的等号是raw
的快捷方式,j
是escape\u javascript
<%= (puts User.all).to_json %>