[英]How to deal with double quotes in JavaScript when referencing a C# variable
我需要调用一个JavaScript函数,该函数需要一个字符串变量,该字符串变量中可能带有双引号。 这是将变量传递到JavaScript函数的方法:
onclick="copyDescription('<%# Eval("Description") %>');"
问题在于该函数永远不会触发,因为它不喜欢'Description'变量中的引号。
例如,“描述”可以是:
VALVE BALL 1" 2000 RP THRD NACE SS BALON LS-10561
如果我从上述说明中删除双引号,则效果很好。 我通过执行以下操作对此进行了进一步测试,并且按预期工作:
$(document).ready(function () {
var str = 'VALVE BALL 1" 2000 RP THRD NACE SS BALON LS-10561';
copyDescription(str);
});
我尝试通过JavaScript进行.replace('“','\\”')和.replace('“','')的操作,但均不起作用。我可以通过修改将值获取为的C#代码来删除引号删除双引号就可以了,只是不能通过JavaScript,有什么想法吗?
问题在于"
正在终止HTML属性并切断了JS中间语句。
双引号必须表示为"
以双引号分隔的属性值中。
使用Microsoft反跨站点脚本库并在字符串上调用函数JavaScriptEncode()
我所使用的解决方案是使用我的问题的答案:
onclick="copyDescription('<%# Server.HtmlEncode(Eval("Description").ToString()) %>');"
Server.HtmlEncode可以满足我的需要。
感谢大家的帮助和解答!
将该Eval调用改为输出JSON或纯文本。 它将处理所有嵌入式Javascript元字符。 我不知道如何在C#中完成,但是在PHP中很简单:
onclick="copyDescription(<?php echo json_encode(...) ?>);"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.