【发布时间】:2015-06-25 05:15:32
【问题描述】:
我正在尝试使用单击事件处理程序实现 jQCloud 词云。它需要我在 JSON 中传递一个 javascript 函数。
在 C# 中,我制作了动态 JSON 文本
foreach (var r in result)
{
sbChart.Append("{\"text\": \"" + r.Key + "\", \"weight\": " + r.Count().ToString() + ", ");
sbChart.Append("\"handlers\": { \"click\": \"function() { alert('You clicked " + r.Key + "');}\"}}, ");
}
if (sbChart.Length != 0)
{
returnString = "[" + sbChart.ToString().Substring(0, sbChart.Length - 2) + "]";
}
我通过网络方法将此返回到我的代码所在的javascript
var words = JSON.parse(strJSON);
$('#div').jQCloud(words);
生成的 JSON 是
[
{"text": "the", "weight": 111, "handlers": { "click": "function() { alert('You clicked the');}"}},
{"text": "in", "weight": 66, "handlers": { "click": "function() { alert('You clicked in');}"}}
]
但是,由于我的函数是一个字符串,它不会作为对象执行。如果我在函数语句之前和之后删除双引号,它会在解析过程中给我Invalid Character 错误。
请任何人帮助我如何使此警报起作用?
【问题讨论】:
-
您永远不需要以这种方式传递函数。如果您认为有必要,那么也许您应该重新评估您的整体设计。
-
非常感谢您的建议,我改变了方法:)
标签: javascript c# jquery json word-cloud