字符串比它应该更早截断

时间:2014-08-27 06:12:32

标签: javascript jquery

我正在使用动态内容的onclick javascript方法:

onclick="adviceEvent('${advice?.content}');"

建议内容介于字符串之间:

Check these details carefully - you don't want to miss a offer because you h...

由于 中的撇号说明:

SyntaxError: missing ) after argument list

我该如何解决这个问题。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如果它可能你需要创建一个代码,它将在浏览器执行之前转义撇号,所以改变

onclick="adviceEvent('${advice?.content}');"

var str1 = '${advice?.content}'.replace("'","\\'");

onclick="adviceEvent('"+str1+"');"

我认为使用另一个额外的变量只会逃避代码本身中转义引号之间的所有混淆。

答案 1 :(得分:0)

你应该逃离服务器端的'

做类似的事情 -

onclick="adviceEvent('${yourDynamicContent.replaceAll("'","\\'")}');"//your server side code to replace all '

替换服务器端'内的所有dynamic content而不是客户端

在客户端,如果您的dynamic content包含任何',那么在客户端上,它将变成一些无效的javascript字符串。

假设您的动态内容已打印hi'hello, 然后在客户端,您的代码将是

onclick="adviceEvent('hi'hello');"//'hi'hello'  a invalid string in js

但是如果你从动态内容中逃脱' 这就像

onclick="adviceEvent('hi\'hello');"//'hi\'hello' a valid string in js

答案 2 :(得分:0)

感谢大家为您的答案但是,我通过交换单引号和双引号的位置解决了我的问题:

onclick="adviceEvent('${advice?.content}');"

onclick='adviceEvent("${advice?.content}");'

注意引号的位置。

并且一切都很完美。