我在尝试在 javascript 代码中使用 Rails 变量时遇到问题。
例如,我可能定义一个 link_to_remote,带有参数:complete => "alert('my_var');"
If my_var = "I'm testing."
,那么 javascript 代码将会由于单引号过早地关闭代码而中断。如果我尝试使用escape_javascript(my_var)
这样报价就变成了\'
,似乎并没有解决问题。
我注意到当你尝试时alert('I\'m testing');
有问题,但如果你这样做alert('I\\'m testing')
, 有用。由于 escape_javascript 只转'
into \'
, 而不是\\'
,有人对如何处理这个问题有建议吗?
谢谢!
埃里克
当你尝试时alert('I\'m testing');
有问题
反斜杠也是 Ruby 字符串中的转义符!所以字符串文字:
"alert('I\'m testing');"
表示字符串:
alert('I'm testing');
在 JavaScript 看到它之前,反斜杠已经消失了。当你编写 JavaScript 字符串文字时inside需要转义的 Ruby 字符串文字,\\
,得到真实的\
然后,在 JavaScript 中,它会避开撇号。
escape_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 字符串文字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)