如何使用javascript / jQuery中的Classic ASP变量转义引号?? ASP变量取自DB。我正在使用:
var goala = "<%=(goal_a)%>";
但很明显,它显示为
var goala = "<p>testing "quotation" marks</p>";
页面加载时,会使用意外标识符中断函数。
编辑:我使用jQuery而不是&#34;我怎样才能使用jQuery实现这一点&#34;抱歉不清楚。
有什么想法吗?感谢
答案 0 :(得分:2)
你已经问过如何做到这一点&#34;使用jQuery。&#34;你不能。当涉及jQuery时,代码已经无效。您必须修复此服务器端。
经典ASP不太可能有任何内置功能,可以帮助您在一般情况下解决这个问题。
请注意,您必须处理的不仅仅是"
个字符。要成功将文本输出到JavaScript字符串文字,您必须至少处理您使用的引号("
或'
),换行符,任何其他控制字符等。
如果您使用VBScript作为服务器端语言,则可以使用Replace
替换需要替换的字符:
var goala = "<%=Replace(goal_a, """", "\""")%>";
但是,你需要建立一份你需要处理和解决的事情清单; e.g。
var goala = "<%=Replace(Replace(Replace(goal_a, """", "\"""), Chr(13), "\n"), Chr(10), "\r")%>";
......等等。
如果您的服务器端语言是JScript,则可以使用replace
大致相同的方式:
var goala = "<%=goal_a.replace(/"/g, "\\\").replace(/\r/g, "\\r").replace(/\n/g, "\n")%>";
......等等。请注意使用带有g
标志的正则表达式,以便替换所有出现的内容(如果对第一个参数使用字符串,则只替换第一个匹配项。)
答案 1 :(得分:0)
适应answer for another language提供了更强大的解决方案:
Function JavascriptStringEncode(text)
If IsEmpty(text) Or text = "" Or IsNull(text) then
JavascriptStringEncode = text
Exit Function
End If
Dim i, c, encoded, charcode
' Adapted from https://stackoverflow.com/q/2920752/1178314
encoded = ""
For i = 1 To Len(text)
c = Mid(text, i, 1)
Select Case c
Case "'"
encoded = encoded & "\'"
Case """"
encoded = encoded & "\"""
Case "\"
encoded = encoded & "\\"
Case vbFormFeed
encoded = encoded & "\f"
Case vbLf
encoded = encoded & "\n"
Case vbCr
encoded = encoded & "\r"
Case vbTab
encoded = encoded & "\t"
Case "<" ' This avoids breaking a <script> content, in case the string contains "<!--" or "<script" or "</script"
encoded = encoded & "\x3C"
Case Else
charcode = AscW(c)
If charcode < 32 Or charcode > 127 Then
encoded = encoded & GetJavascriptUnicodeEscapedChar(charcode)
Else
encoded = encoded & c
End If
End Select
Next
JavascriptStringEncode = encoded
End Function
' Taken from https://stackoverflow.com/a/2243164/1178314
Function GetJavascriptUnicodeEscapedChar(charcode)
charcode = Hex(charcode)
GetJavascriptUnicodeEscapedChar = "\u" & String(4 - Len(charcode), "0") & charcode
End Function
在此answer on how to get the javascript unicode escaping的帮助下也可以完成此操作,并且它具有本other answer所解释的好处。
请注意,我没有按照其他答案中的建议特别转义"
和'
,因为我认为在html“ regular”上下文中(例如属性值),{{1 }}无论如何都必须另外进行,它将处理引号(和“&”号,...)。
由于HTMLEncode
的上下文情况,<
仍被特殊处理,无法使用<script>
(在{{1}中使用时,从Javascript代码的角度来看,不会对其进行html解码) }} 标签)。有关HTMLEncode
情况的更多信息,请参见here。
当然,更好的解决方案是避免将任何Javascript直接放在HTML中,而将所有Javascript放在单独的Javascript文件中。数据应通过html标签上的<script>
属性给出。