2014-05-14 64 views
0

我的JSP中有下面的代碼。用戶界面顯示除「&」以外的所有字符。在%26(&符號)的值時,javascript中的unescape不工作

<c:out value="<script>var escapedData=unescape('${column}'); 
$('div').html(escapedData);</script>" escapeXml="false" /> </div> 

例如, 1)工作的情況下

輸入= [email protected]

值在我escapedData變量是ni%21er%40。現在,當我把它放在我div使用 $('div').html(escapedData);然後在HTML O/P是預期

例如2)問題的情況下

輸入= nice&

值在我escapedData變量是nice%26。現在,當我把它放在我div使用 $('div').html(escapedData);隨後還就以下

$('#test20').html('nice%26');

然而,顯示時,顯示在JSP輸出,它只是打印「好」。它截斷之後的所有內容&

有什麼建議嗎?

+1

'unescape'正在被淘汰。嘗試使用'decodeURIComponent'來代替。 – ArtOfCode

+0

它應該在頁面上顯示「nice%26」還是「nice&'? –

+0

它應該顯示很好& – user3599032

回答

0

它看起來像你有什麼誤解unescape(val)/escape(val)做什麼,你需要他們。當你使用.html()時你需要注意什麼。

HTML and URI具有一定的特徵,具有特殊的含義。最重要的是:

HTML<>&

URI/?%&

如果你想使用這些字符中的一個HTMLURI你需要逃避它們。

轉義爲URIHTML是不同的。

功能unescape/escape(不建議使用)和decodeURI/endcodeURIURI。但是,你想要的是逃避你的數據到HTML格式。

沒有這樣做的內置函數in_JS_,但你可以例如使用這個問題的答案代碼Can I escape html special chars in javascript?

但是,因爲看起來你使用jQuery,你可以考慮只使用.text而不是.html,因爲這樣做會爲你逃脫。

附加的註釋:
我敢肯定的是,var escapedData=unescape('${column}');沒有做任何事情。我假設${column}已經是[email protected]/nice&

所以請檢查你的源代碼。如果var escapedData=unescape('${column}');看起來像var escapedData=unescape('[email protected]');那麼您應該刪除unescape否則,如果${column}包含諸如%23

+0

感謝真正好的解釋。將檢查它並讓你知道 – user3599032