在javascript函数中传递撇号

时间:2011-05-20 12:51:54

标签: javascript jsp

我有jsp代码:

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

${result.url}是动态值。当撇号进入URL时,我收到错误。

我尝试了所有方法,例如escape,encodeURI,用double替换单引号但没有任何效果。

脚本调用如下:

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

3 个答案:

答案 0 :(得分:1)

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

请参阅:How can I escape special HTML characters in JSP?

答案 1 :(得分:1)

您需要确保${result.url}返回有效网址。报价在网址中无效。听起来你正在返回一个带有查询字符串的URL,其中包含未编码的参数,如下所示

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

您需要按如下方式更改方法

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

您无法使用escape()等在JavaScript方面修复此问题。已经太晚了。

答案 2 :(得分:0)

为什么不这样做:

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

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

然后你根本不用担心逃避。

-tjw