Highcharts:返回PlotBands通过JSON单击功能

时间:2013-06-29 10:52:40

标签: json highcharts

我正在使用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);}'));

我确信这是一件小事,但我几个小时都找不到它......提前谢谢。

1 个答案:

答案 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);}
}