如何使用 array_merge 显示 PHP/Highcharts 中不带引号的命令?
How to use array_merge to display non-quoted commands in PHP/Highcharts?
我正在向客户端传递一个带有多个 Highcharts 参数的 JSON 数组。在少数情况下,我使用 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);
})
那么,我该怎么做才能将其传递而不显示为文本?谁能给我提示如何以正确的方式做到这一点?非常感谢!
几种方式
在 javascript 本身中实现事件处理程序,如
options.credits = data["credits"];
options.chart.events = {};
options.chart.events.load = function(event){
// implementations go here
}
Not recommending though, using eval
options.credits = data["credits"];
options.chart.events = eval(data.chart.events);
希望对您有所帮助
我正在向客户端传递一个带有多个 Highcharts 参数的 JSON 数组。在少数情况下,我使用 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);
})
那么,我该怎么做才能将其传递而不显示为文本?谁能给我提示如何以正确的方式做到这一点?非常感谢!
几种方式
在 javascript 本身中实现事件处理程序,如
options.credits = data["credits"]; options.chart.events = {}; options.chart.events.load = function(event){ // implementations go here }
Not recommending though, using eval
options.credits = data["credits"]; options.chart.events = eval(data.chart.events);
希望对您有所帮助