通过json_encode()传递PHP字符串(表示JS函数)

时间:2010-10-13 14:34:37

标签: php javascript json codeigniter highcharts

我正在将这个PHP / CodeIgniter库用于jQuery Highcharts:http://www.crustiz.com/php-jquery/highcharts-library-for-codeigniter/

库的工作方式是构建一个PHP数组选项,然后使用json_encode将其转换为json(参见该库的第273行),然后由jQuery Highcharts插件使用。这很好,除了我试图使用的选项是工具提示格式化程序,它需要是一个javascript函数,而不是一个字符串(参见http://www.highcharts.com/ref/#tooltip)。

由于库没有工具提示功能,我创建了一个作为测试:

  function set_tooltip() {
    $this->a_options['tooltip']['formatter'] = 'function() { return this.series.name + "<br>" + this.x + ": " + this.y }';
    return $this;
  }

但这不起作用,因为JS函数输出为字符串,而不是函数。任何人都知道在通过json_encode之后是否有办法让它成为一个函数而不重写那部分库?

2 个答案:

答案 0 :(得分:2)

JSON并不意味着传达功能。如果您查看documentation,则只有四种类型的规范 - 对象,数组,字符串和数字 - 加上值truefalsenull

如果你坚持这样做,或许像Sending Javascript Functions Over JSON这样的文章可以帮助你。

答案 1 :(得分:1)

JSON没有“函数回调”类型,所以我认为这是不可能的。它知道only the basic typesstring / number / object / array