Передайте строку PHP (которая представляет функцию JS) через json_encode () - PullRequest
0 голосов
/ 13 октября 2010

Я использую эту библиотеку PHP / CodeIgniter для jQuery Highcharts: http://www.crustiz.com/php-jquery/highcharts-library-for-codeigniter/

Способ, которым библиотека работает, заключается в том, что она создает массив параметров PHP, а затем преобразует его в json с помощью json_encode (см. Строку 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 ]

2 голосов
/ 13 октября 2010

JSON не предназначен для передачи функций. Если вы посмотрите на документацию , то есть только спецификации для четырех типов - объект, массив, строка и число - плюс значения true, false и null.

Если вы настаиваете на этом, возможно, статья типа Отправка функций Javascript через JSON поможет вам.

1 голос
/ 13 октября 2010

JSON не имеет типа «обратного вызова функции», поэтому я думаю, что это невозможно.Он знает только основные типы : string / number / object / array

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...