我最近发帖询问如何将数据绑定(bind)数据传递给 JavaScript 函数。在帮助下,我得到了我想要的结果;然而,紧接着我又遇到了另一个问题。
<asp:ImageButton ID="ImageButton1" CommandArgument='<%# Eval("MECNUM") %>' runat="server" ImageUrl="printer.png" OnClick="Display_OnClick"
OnClientClick='<%# Eval("MECNUM", "Display_OnClientClick({0})") %>' />
假设 MECNUM 变成了 XYZ。不幸的是它会抛出一个错误,说 XYZ 是一个 undefined variable 。我真正想要的是传递字符串“XYZ”。放置 XYZ.toString() 不起作用,因为问题仍然是变量未定义。有什么想法吗?
function Display_OnClientClick(mecnum) {
alert(mecnum);
}
非常感谢您的帮助
最佳答案
您需要将其括在双引号中。像这样。
'<%# Eval("MECNUM", "Display_OnClientClick(\"{0}\")") %>'
为什么需要这样做?
如果你不这样做,它将生成这样的 javascript - Display_OnClientClick(XYZ)
。
显然 XYZ 需要是 javascript 变量或者之前定义为 javascript 变量。为了掩盖这一点,您需要 Display_OnClientClick("XYZ")
。这里它会说 XYZ 是一个字符串并且可以工作。这是这里唯一的原因。
如果您遇到引号转义问题(js 错误),您可以引用此 - how to escape characters when using server side delimiters
关于javascript - 如何让 javascript eval 返回字符串而不是变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27252978/