在Javascript中使用Rails变量时是否从中转义引号?
我在javascript代码中尝试使用rails变量时遇到问题 例如,我可以使用参数定义链接到远程在Javascript中使用Rails变量时是否从中转义引号?,javascript,ruby-on-rails,escaping,quotes,Javascript,Ruby On Rails,Escaping,Quotes,我在javascript代码中尝试使用rails变量时遇到问题 例如,我可以使用参数定义链接到远程 :complete=>“警报('my_var');” 如果my_var=“I'm testing.”,则javascript代码将由于单引号过早关闭代码而中断。如果我尝试使用escape\u javascript(my\u var)将引号转换为\',似乎无法解决问题 我注意到当您尝试alert(“我正在测试”)时有一个问题,但是如果您发出警报('I\\'m testing'),它就会工作。由于es
:complete=>“警报('my_var');”
如果my_var=“I'm testing.”
,则javascript代码将由于单引号过早关闭代码而中断。如果我尝试使用escape\u javascript(my\u var)
将引号转换为\'
,似乎无法解决问题
我注意到当您尝试alert(“我正在测试”)时代码>有一个问题,但是如果您发出警报('I\\'m testing')
,它就会工作。由于escape\u javascript只将'
转换为\'
,而不是\\'
,有人对如何处理这个问题有什么建议吗
谢谢!
埃里克
当您尝试alert(“我正在测试”)时代码>有个问题
反斜杠在Ruby字符串中也是一种转义!因此字符串文本:
"alert('I\'m testing');"
表示字符串:
alert('I'm testing');
在JavaScript查看反斜杠之前,反斜杠已经消失了。当您在Ruby字符串文本中编写JavaScript字符串文本时,您需要转义,\\
,以获得真正的\
,然后在JavaScript中转义撇号
escape\u javascript
如果输入中包含反斜杠,则会正确生成javascript的反斜杠。但同样,如果您正在编写字符串文字,则必须避开反斜杠才能得到真正的反斜杠:
escape_javascript("\b") -> this is a backspace character!
escape_javascript("\\b") -> this is backslash-then-letter-b;
escaped for JavaScript literal to double-backslash-then-b.
所以,这很好:
"'"+escape_javascript(myvar)+"'"
或者,您可以使用JSON编码器创建JavaScript字符串文字,包括周围的引号。它还有一个简单的“j”别名:“+j(myvar)+””。最近的读者注意:从rails 3.2(或者更早)开始,方法是escape\u JavaScript
而不是JavaScript\u escape