【问题标题】:JSON, Highcharts and Coldfusion json dataJSON、Highcharts 和 Coldfusion json 数据
【发布时间】:2024-01-15 22:37:01
【问题描述】:

一段时间以来,我一直在尝试完成这项工作,但我似乎无法找到完成这项工作的解决方案。

我可以毫无问题地使用我的 Coldfusion CFC 输出 JSON,而不是我试图将此 JSON 与 Highcharts.js 一起使用。我已经验证 JSON 是有效的,但 highcharts 似乎有问题,因为在系列数据中,数据周围有双引号。我到处寻找解决方案,但似乎找不到任何可以让我走上正确道路的帮助。如果我从 series.data 中的数组周围删除双引号,则图表可以正常加载,但我远离它是动态的。

这是我的 CFC 的 JSON 输出:`

{
    "series": [{
        "data": "[[Date.UTC(2017,05,21),2.9],[Date.UTC(2017,05,28),2.9],[Date.UTC(2017,06,04),3.1],[Date.UTC(2017,06,11),2.9]]",
        "name": "ATC Main Pod A - B - C"
    }, {
        "data": "[[Date.UTC(2017,05,21),2.8],[Date.UTC(2017,05,28),2.6],[Date.UTC(2017,06,04),2.9],[Date.UTC(2017,06,11),2.9]]",
        "name": "ATC Mays (ACB Blue)"
    }, {
        "data": "[[Date.UTC(2017,05,21),2.4],[Date.UTC(2017,05,28),2.6],[Date.UTC(2017,06,04),3],[Date.UTC(2017,06,11),3.2]]",
        "name": "ATC Mays (ACB Purple)"
    }, {
        "data": "[[Date.UTC(2017,05,21),3.3],[Date.UTC(2017,05,28),3.3],[Date.UTC(2017,06,04),3.4],[Date.UTC(2017,06,11),3.3]]",
        "name": "ATC R10 Pod D"
    }, {
        "data": "[[Date.UTC(2017,05,21),3.3],[Date.UTC(2017,05,28),3.4],[Date.UTC(2017,06,04),2.8],[Date.UTC(2017,06,11),1.9]]",
        "name": "ATC TU Pod A - B"
    }, {
        "data": "[[Date.UTC(2017,05,21),2.9],[Date.UTC(2017,05,28),2.9],[Date.UTC(2017,06,04),3.1],[Date.UTC(2017,06,11),3.4]]",
        "name": "CTRC 1st Floor"
    }, {
        "data": "[[Date.UTC(2017,05,21),2.9],[Date.UTC(2017,05,28),3.3],[Date.UTC(2017,06,04),3.2],[Date.UTC(2017,06,11),2.3]]",
        "name": "CTRC 2nd Floor"
    }]
}

这是我的 ajax 调用的样子:

function loadChartData(c){
$.ajax({type: "POST", url: "CFCs/survey.cfc", data: {method:"results_RLU", CENTERID: c},dataType: 'json',success: function(data){
    options.series = data.series
        var chart = new Highcharts.Chart(options)
    }
});
}

【问题讨论】:

  • 如果您按 F12,javascript 控制台中是否有任何错误?
  • 看起来您的 data 属性本身就是一个字符串,采用 JSON 格式。您必须通过它们并在这些值上调用 JSON.parse。
  • @mkaatman,控制台中没有错误。
  • 解决它的正确方法是在后端工作以将其作为数组而不是字符串返回。如果你不能这样做,请使用你得到的答案。

标签: javascript json highcharts coldfusion-11


【解决方案1】:

没问题!

只需迭代系列中的每个项目并将数据解析为有效的 JSON 对象。

享受:)

function loadChartData(c){
$.ajax({type: "POST", url: "CFCs/survey.cfc", data: {method:"results_RLU", CENTERID: c},dataType: 'json',success: function(data){

    options.series = data.series.map(function(item) 
    {
       item.data = JSON.parse(item.data);

       return item;
    });

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

【讨论】:

  • 这将起作用,我需要稍微更改我的查询,它不喜欢我设置该字段的方式。 '[Date.UTC('||to_char(THEWEEKOF,'yyyy,mm,dd') ||'),'||ROUND(AVG(RATING),1)||']' 数据