Question

J'utilise cette bibliothèque PHP / CodeIgniter pour jQuery Highcharts: http://www.crustiz.com/php-jquery/highcharts-library-for-codeigniter/

La façon dont la bibliothèque fait des choses est qu'il construit un tableau PHP d'options, puis la convertit en JSON en utilisant json_encode (voir la ligne 273 de cette bibliothèque) qui est ensuite utilisé par le plugin jQuery Highcharts. Cela est bien, sauf l'option que je suis en train d'utiliser est le formatter infobulle, qui doit être une fonction javascript, pas une chaîne (voir http://www.highcharts.com/ref/#tooltip ).

Depuis la bibliothèque ne possède pas de fonction d'info-bulle, je créé un comme un test:

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

Mais cela ne fonctionne pas comme la fonction JS est sortie comme une chaîne, pas une fonction. Quelqu'un sait s'il y a un moyen de faire une fonction après le passage par json_encode sans réécrire cette partie de la bibliothèque?

Était-ce utile?

La solution

JSON ne vise pas à transmettre des fonctions. Si vous jetez un oeil à la documentation , il existe des spécifications que pour quatre types - objet, tableau, chaîne et numéro -. De plus, les valeurs true, false et null

Si vous insistez pour le faire, peut-être un article comme Envoi Javascript Fonctions Plus JSON vous donnera un coup de main.

Autres conseils

JSON n'a pas de type « de rappel de la fonction » donc je pense que cela est impossible. Il sait que les types de base : string / number / object / array

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top