我想從我的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