0

我有一个必须用来传递给 JavaScript 函数的字符串。我尝试了很多方法,但我仍然无法使其工作。

<a href="javascript:goFac('<%=name%>')"><%=name%></a>

name 字段是一个包含单引号的字符串,例如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("'","&#39;");

并且

 nameString = nameString.replaceAll("'","&apos;");

我仍然无法让它工作。而且我不能去EL。

4

4 回答 4

1

如果您想用 Java 代码中的 JavaScript 转义(反斜杠)单引号 (\') 替换字符串中的单引号 ('),那么您需要转义反斜杠字符(使用反斜杠!)。例如:

nameString = nameString.replaceAll("'","\\'"); 

另请参阅:String.replaceAll 带有双反斜杠的单反斜杠

于 2012-08-10T10:50:54.277 回答
1

尝试使用String.fromCharCode(39)代替单引号,String.fromCharCode(39) 是单引号的 ASCII 码。

于 2012-08-11T04:40:18.610 回答
0

以下对我有用,因为 HTML 编码是在函数调用之前完成的,并将单引号替换为&#39;.

nameString = nameString.replaceAll("&#39;","\\'");
于 2013-01-23T16:18:18.823 回答
0

如果您在 JSP 标记内执行此操作,则需要有足够的反斜杠以使其中一个真正进入网页。代码将是:

<a href="javascript:goFac('<%=nameString.replaceAll("'", "\\\\'") %>')"><%=nameString%></a>

您需要一个反斜杠来转义另一个反斜杠,并且每个反斜杠都需要转义 - 因此需要四个反斜杠(讨厌)。

希望有帮助。

于 2013-09-11T21:35:35.757 回答