【问题标题】:Pass a string with double and single quotes from asp to javascript function将带有双引号和单引号的字符串从 asp 传递给 javascript 函数
【发布时间】:2016-12-09 06:52:46
【问题描述】:

我有以下代码:

PropertyID = 101
PropertyName = "My'complex" property name"" //This is passed from sql query
Response.Write "<a href=""javascript:RenameFunc("& PropertyID & ", '" & PropertyName  & "' )"" onclick=""""></a>"

问题是,如果我的变量中有单引号或双引号,javascript 函数会刹车(这是正常的)。

我试着像这样逃避它们:

 Response.Write "<a href=""javascript:RenameFunc("& PropertyID & ", '" & Replace(Replace(PropertyName,"'",""),"""","")  & "' )"" onclick=""""> </a>"

这不会破坏函数,但它会从我的字符串中删除引号,我需要它们。

我也尝试过像这样使用String.row

Response.Write "<a href=""javascript:RenameFunc("& PropertyID & ", String.raw`"& PropertyName &"` )"" onclick=""""> </a>"

仍然没有成功,但也许我用错了。

有没有其他方法可以传递字符串并保持原样,而不会破坏 javascript 函数?

【问题讨论】:

  • 你试过Server.HTMLEncode()吗?
  • 刚才我试过了,效果很好! :) 谢谢。如果您愿意,请将其写为答案,我会接受。我知道这会很简单......

标签: javascript string asp-classic escaping quotes


【解决方案1】:

使用Server.HTMLEncode() 助手:

Response.Write "<a href=""javascript:RenameFunc("& PropertyID & ", '" & Server.HtmlEncode(Replace(PropertyName,"'","\'")) & "')"" onclick=""""> </a>"

Documentation

【讨论】:

  • 原来我还是有单引号的问题,但我用'" &amp; Server.HtmlEncode(Replace(PropertyName,"'","\'")) &amp; "'修复了它现在效果很好。
猜你喜欢
  • 2017-10-31
  • 1970-01-01
  • 2011-04-14
  • 2021-05-21
  • 2017-02-26
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多