2013-02-18 46 views
1

我想从我的Java代码将字符串传递给JavaScript像这样:安全传递字符串的JavaScript

myData.data = "${data.myString}"; 

这打破如果myString包含"

我试图存储一个JavaScript安全的字符串,而不是,只是\"更换"但后来当我在JSP中使用myString我得到一个丑陋的输出与\"显示的"

代替

什么是安全地传递一个字符串,而不是弄乱我的输出其余部分的最好方法。

+0

不是一个强大的解决方案,但你可以使用单引号代替? – 2013-02-18 20:58:18

+0

你试过用'(单引号)代替“(双引号)吗?你可能也需要转义这个。 – 2013-02-18 20:58:28

+0

一种可能性是base64编码吗? – merlin2011 2013-02-18 20:58:27

回答

1

编码成JSP中的HTML:

<input id="test_hide" type="hidden" value="${URIUtil.encodeAll("http://www.google.com?q=a b","UTF-8")}"> 

然后在JavaScript:

myData.data = decodeURIComponent(document.getElementById('test_hide').getAttribute('value')); 

Java - Convert String to valid URI object

+0

是的,我原来是这样的。我对URLEncoder的使用很模糊:)谢谢 – 2013-02-18 21:24:38

0

一不好的解决办法:

检查,如果你的字符串中有双引号,如果是,那么使用

myData.data = '${data.myString}'; 

,如果它包含单引号使用

myData.data = "${data.myString}"; 

此,如果你有单,双引号会爆炸。

一个很好的解决方案:

只需使用

&quot;