2010-10-13 2 views
0

Я использую это PHP/библиотека CodeIgniter для JQuery Highcharts: http://www.crustiz.com/php-jquery/highcharts-library-for-codeigniter/Проходят PHP строку (которая представляет собой функцию JS) через json_encode()

То, как библиотека делает вещи является то, что он строит PHP массив options, затем преобразует его в 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 без перезаписи этой части библиотеки?

+1

Независимо от того, что вы делаете, отправка javascript поверх ajax, вероятно, не самый эффективный способ сделать это. – Incognito

+0

Я не посылаю JS за ajax. –

ответ

2

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

Если вы настаиваете на этом, возможно, статья вроде Sending Javascript Functions Over JSON даст вам руку.

1

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

Смежные вопросы