从JSON编码的PHP传递JavaScript函数

时间:2013-05-22 18:29:53

标签: php javascript function highcharts typeerror

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'

如何更改此设置以便将其识别为功能?或者这甚至可能吗?

2 个答案:

答案 0 :(得分:2)

从远程源执行javascript是一个坏主意,因为你不能相信它。但是,如果你必须:

json中包含的函数是一个字符串,因此您需要对其进行评估:

 pie.dataLabels.formatter = eval('('+pie.dataLabels.formatter+')');

对于需要转换的对象的每个方法。

然而,正如一开始所说,几乎可以肯定一个解决方案不需要你以这种方式获取javascript。

答案 1 :(得分:0)

我决定只返回pie高图的系列数据...而不是整个高图配置数组... plotOptions现在在javascript中定义,而不是由json_encoded PHP数组返回..

我不太清楚为什么我这样做,但感谢eval的所有帮助!