Как использовать array_merge для отображения команд без кавычек в PHP / Highcharts?

Я передаю массив JSON с несколькими аргументами Highcharts клиенту. В некоторых случаях я использую array_merge, чтобы вставить после кода выделения несколько дополнительных вещей. Это прекрасно работает, если передаваемый аргумент будет отображаться в кавычках, например:

$data_['xAxis'] = array_merge($data_['xAxis'], array("type" => "category"));

Затем на стороне клиента это будет выглядеть так:

type: "category"

Но бывают случаи, когда я хочу передать функцию, которая должна отображаться так:

chart: {
events: {
load: function () {
var label = ....
}
}
},

Когда я использую это здесь, это отображается в виде текста:

$data_['chart'] = array_merge($data_['chart'], array("events" => "{load: function(event) {var label = ... }}");

chart: {
events: "{
load: function () {
var label = ....
}
}"},

РЕДАКТИРОВАТЬ: Javascript на стороне клиента выглядит так:

$(document).ready(function() {
var options = {};

var url =  "http://geodev.grid.unep.ch/mod_test/jsonp_response.php?callback=?";

$.getJSON(url, {selectedCountries: selectedCountries , selectedID: selectedID, selectedYears: selectedYears, per_capita: per_capita, graphBorder: graphBorder, graphSource: graphSource, graphStyle: graphStyle, graphXAxis: graphXAxis, type: "jsonp"})
.done(function(data)
{
//console.log(data);

options.chart       = data["chart"];
options.tooltip     = data["tooltip"];
options.series      = data["series"];
options.title       = data["title"];
options.subtitle    = data["subtitle"];
options.yAxis       = data["yAxis"];
options.xAxis       = data["xAxis"];
options.legend      = data["legend"];
options.exporting   = data["exporting"];
options.plotOptions = data["plotOptions"];
options.credits     = data["credits"];

var chart = new Highcharts.Chart(options);
})

Итак, что я могу сделать, чтобы передать его, чтобы он не отображался в виде текста? Кто-нибудь может дать мне подсказку, как сделать это правильно? Большое спасибо!

1

Решение

пара способов

  1. реализовать обработчики событий в самом javascript, например

    options.credits     = data["credits"];
    
    options.chart.events = {};
    options.chart.events.load = function(event){
    // implementations go here
    }
    
  2. Не рекомендую, хотя, с помощью Eval

    options.credits     = data["credits"];
    
    options.chart.events = eval(data.chart.events);
    

Надеюсь это поможет

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector