2011-05-20 100 views
0

我有jsp代碼作爲傳遞撇號。當一個撇號出現在URL中時,我得到錯誤。以JavaScript功能

我嘗試過所有的方法,如escape,encodeURI,用雙引號替換單引號,但沒有任何作用。

腳本調用如下:

function showURL(name){ 
    alert(name); 
} 
+0

[Javascript轉義引用]可能的重複(http://stackoverflow.com/questions/2004168/javascript-escape-quotes) – JohnFx 2011-05-20 12:58:32

回答

0

爲什麼不只是這樣做:

onclick=showURL("${result.url}"); 

function showURL (result_url) { 
    alert("<c:out value='"+ result_url + "' />"); 
} 

,那麼你不必擔心逃避在所有。

-tjw

+0

我已經在上面嘗試過了,但在onclick調用中出現錯誤屬性名稱未定義。我曾經使用過逃逸一次,它適用於除撇號以外的所有特殊字符。 – 2011-05-20 13:14:48

+0

我的代碼工作時,我直接在Java腳本中使用c:out值。 var splCharUrl =「」 – 2011-05-25 14:34:32

1
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 
${fn:escapeXml(myString)} 

參見:How can I escape special HTML characters in JSP?

+0

我使用它作爲href。所以當fn:escapeXML表示爲未定義的屬性 – 2011-05-20 13:01:15

1

您需要確保${result.url}返回有效的URL。報價在網址中無效。這聽起來像你正在使用的查詢字符串未編碼參數,如如下

public String getUrl() { 
    return "page.jsp?foo=" + foo + "&bar=" + bar; 
} 

返回一個URL,您需要更改方法如下

public String getUrl() { 
    return "page.jsp?foo=" + URLEncoder.encode(foo, "UTF-8") + "&bar=" + URLEncoder.encode(bar, "UTF-8"); 
} 

你不能在JavaScript側解決這個問題escape()等等,現在已經太晚了。