PHP - 这是由PHP函数(json_encoded)返回的Highchart配置数组的一部分
'plotOptions' => array(
'pie' => array(
'allowPointSelect' => TRUE,
'cursor' => 'pointer',
'dataLabels' => array(
'enabled' => TRUE,
'color' => '#000000',
'connectorColor' => '#000000',
'formatter' => "function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %' }"
)
)
)
JavaScript - 从编码数据中访问此信息
container.highcharts(r.hc);
// r.hc is the array that contains the highchart information above
我遇到的问题是:
Uncaught TypeError: Object function() { return '<b>'+ this.point.name +'</b>: '+
this.percentage +' %' } has no method 'call'
如何更改此设置以便将其识别为功能?或者这甚至可能吗?
答案 0 :(得分:2)
从远程源执行javascript是一个坏主意,因为你不能相信它。但是,如果你必须:
json中包含的函数是一个字符串,因此您需要对其进行评估:
pie.dataLabels.formatter = eval('('+pie.dataLabels.formatter+')');
对于需要转换的对象的每个方法。
然而,正如一开始所说,几乎可以肯定一个解决方案不需要你以这种方式获取javascript。
答案 1 :(得分:0)
我决定只返回pie高图的系列数据...而不是整个高图配置数组... plotOptions现在在javascript中定义,而不是由json_encoded PHP数组返回..
我不太清楚为什么我这样做,但感谢eval的所有帮助!