我有一个必须用于传递给JavaScript函数的字符串。我尝试了很多方法,但我仍然无法使它发挥作用。
<a href="javascript:goFac('<%=name%>')"><%=name%></a>
名称字段是一个包含单引号的字符串,例如 It's Morning 。我试过用:
String nameString = rs.getString("name");
nameString = nameString.replaceAll("'","\'");
<a href="javascript:goFac('<%=nameString %>')"><%=nameString%></a>
还
nameString = URLEncoder.encode(nameString);
还
nameString = nameString.replaceAll("'","'");
还
nameString = nameString.replaceAll("'","'");
我仍然无法让它发挥作用。而且我也不能选择EL。
答案 0 :(得分:1)
如果要在Java代码中使用JavaScript转义(反斜杠)单引号(\')替换String中的单引号('),则需要转义反斜杠字符(使用反斜杠!)。例如:
nameString = nameString.replaceAll("'","\\'");
另请参阅:String.replaceAll single backslashes with double backslashes
答案 1 :(得分:1)
尝试使用 String.fromCharCode(39)而不是单引号,String.fromCharCode(39)是单引号的ASCII代码。
答案 2 :(得分:0)
以下对我有用,因为HTML编码在函数调用之前完成,并用'
替换了单引号。
nameString = nameString.replaceAll("'","\\'");
答案 3 :(得分:0)
如果你在JSP标记内部进行,你需要有足够的反斜杠来实际进入网页。代码是:
<a href="javascript:goFac('<%=nameString.replaceAll("'", "\\\\'") %>')"><%=nameString%></a>
你需要一个反斜杠来逃避另一个反斜杠,并且每个都需要被转义 - 因此有四个反斜杠(yuck)。
希望有所帮助。