我正在使用Highcharts并以JSON格式从服务器发送plotBands的xAxis选项。我想在plotband中添加click方法。如果我在HTML文件中对其进行硬编码,一切正常,但是当我从服务器发送动态生成的代码时,会显示plotband但是click不起作用。我已经将JSON输出直接放在HTML文件中,然后在那里工作
我的JSON输出:
[{"from":1349067600000,"to":1349758800000,"color":"rgba(68, 170, 213, .2)","events":{"click":"function(e) {alert(999);}"}},{"from":1350018000000,"to":1350622800000,"color":"rgba(68, 170, 213, .2)","events":{"click":"function(e) {alert(999);}"}}]
有效的代码:
plotBands:[ {from:Date.UTC(2012,09,01),to:Date.UTC(2012,09,05),color:'rgba(68, 170, 213, .2)',events:{click:function(e) {alert(999);}}},
{from:Date.UTC(2012,09,07),to:Date.UTC(2012,09,12),color:'rgba(68, 170, 213, .2)',events:{click:function(e) {alert(999);}}}
],
从PHP生成JSON的代码:
$treatmentsList[$counter]=array('from'=>strtotime($PatPresVal->pres_med_start_date)*1000,'to'=>strtotime($PatPresVal->pres_med_end_date)*1000, 'color'=>'rgba(68, 170, 213, .2)','events'=>array('click'=>'function(e) {alert(999);}'));
我确信这是一件小事,但我几个小时都找不到它......提前谢谢。
答案 0 :(得分:1)
JSON通常不支持返回函数,特别是不像以前那样将函数作为字符串返回:
"events":{"click":"function(e) {alert(999);}"}}
你可能强迫它使用eval
,但我不鼓励这样做。
更好的选择是循环plotBands对象并在收到JSON响应后添加事件处理程序:
for (var i = 0; i < plotBands.length; i++)
{
plotBands[i]['events'] = {};
plotBands[i]['events']['click'] = function(e) {alert(999);}
}