【问题标题】:Pass a PHP string (which represents a JS function) through json_encode()通过 json_encode() 传递一个 PHP 字符串(代表一个 JS 函数)
【发布时间】:2010-10-13 14:34:37
【问题描述】:

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

库做事的方式是它构建一个 PHP 选项数组,然后使用 json_encode(参见该库的第 273 行)将其转换为 json,然后由 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 而不重写库的那部分之后让它成为一个函数?

【问题讨论】:

  • 无论你在做什么,通过 ajax 发送 javascript 可能不是最有效的方法。
  • 我不会通过 ajax 发送 JS。

标签: php javascript json codeigniter highcharts


【解决方案1】:

JSON 并不是为了传达功能。如果你看一下documentation,只有四种类型的规范——对象、数组、字符串和数字——加上值truefalsenull

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-04-20
      • 1970-01-01
      • 2017-03-10
      • 2013-02-13
      • 2012-08-14
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多