Передайте строку PHP (которая представляет функцию JS) через json_encode ()

StackOverflow https://stackoverflow.com/questions/3924810

Вопрос

Я использую эту библиотеку 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, не переписывая эту часть библиотеки?

Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top