javascript - 如何使用 array_merge 在 PHP/Highcharts 中显示非引用命令?

标签 javascript php highcharts array-merge

我将带有多个 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);
    })

那么,我该怎么做才能将其传递出去,使其不显示为文本呢?谁能给我提示如何以正确的方式做到这一点?非常感谢!

最佳答案

几种方法

  1. 在 JavaScript 本身中实现事件处理程序,例如

    options.credits     = data["credits"];
    
    options.chart.events = {};
    options.chart.events.load = function(event){
        // implementations go here
    }
    
  2. Not recommending though ,使用eval

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

希望这有帮助

关于javascript - 如何使用 array_merge 在 PHP/Highcharts 中显示非引用命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28691732/

相关文章:

javascript - Express.js 服务器错误处理 (404)。在我什至被允许处理错误之前,服务器吓坏了并抛出异常

javascript - 出现 'Cannot resolve method' 错误

javascript - 如何不清除 jQuery 表单中禁用的输入

javascript - UI Bootstrap Modal promise 和 Controller 范围

javascript - htmlspecialchars_decode 导致宽度问题

php - Redis zscore zadd uri 错误分数

php - 将从linkedin检索到的信息转换为文本并将其保存到数据库中

javascript - Highmaps - Choropleth map - 所有区域都是相同的颜色

javascript - 价格线在 HighChart 中消失

javascript - 是否还需要 highcharts-more(从 highcharts 版本 4.0.4 开始)?