2011-05-20 86 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()等等,现在已经太晚了。