2013-02-18 45 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;