我想从我的Java代码将字符串传递给JavaScript像这样:安全传递字符串的JavaScript
myData.data = "${data.myString}";
这打破如果myString
包含"
我试图存储一个JavaScript安全的字符串,而不是,只是\"
更换"
但后来当我在JSP中使用myString
我得到一个丑陋的输出与\"
显示的"
什么是安全地传递一个字符串,而不是弄乱我的输出其余部分的最好方法。
我想从我的Java代码将字符串传递给JavaScript像这样:安全传递字符串的JavaScript
myData.data = "${data.myString}";
这打破如果myString
包含"
我试图存储一个JavaScript安全的字符串,而不是,只是\"
更换"
但后来当我在JSP中使用myString
我得到一个丑陋的输出与\"
显示的"
什么是安全地传递一个字符串,而不是弄乱我的输出其余部分的最好方法。
与"
更换双引号应该工作
编码成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'));
是的,我原来是这样的。我对URLEncoder的使用很模糊:)谢谢 – 2013-02-18 21:24:38
一不好的解决办法:
检查,如果你的字符串中有双引号,如果是,那么使用
myData.data = '${data.myString}';
,如果它包含单引号使用
myData.data = "${data.myString}";
此,如果你有单,双引号会爆炸。
一个很好的解决方案:
只需使用
"
不是一个强大的解决方案,但你可以使用单引号代替? – 2013-02-18 20:58:18
你试过用'(单引号)代替“(双引号)吗?你可能也需要转义这个。 – 2013-02-18 20:58:28
一种可能性是base64编码吗? – merlin2011 2013-02-18 20:58:27