Highcharts不显示图元素或xAxis

时间:2013-12-11 22:04:47

标签: jquery ruby-on-rails ajax json highcharts

您好我正在尝试设置一个基本的高图,但遇到了一个我一直在努力解决的问题。

我正在使用AJAX捕获JSON对象,并尝试将其显示为图形,但只显示标题标签,yAxis标签和系列。我的图表中的列和奇怪的xAxis(即使语法类似于yAxis)都在显示。

我有任何人都知道如何解决这个问题我将不胜感激。

我的HTML页面包含以下JS:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>e

我的HTML页面包含以下HTML / JQuery:

<div id="chart1" style="width:800px; height:300px;"></div>

<script language="javascript" type="text/javascript">

 function chData (jsonData) {
   $('#chart1').highcharts({
    chart: {
        type: 'column'
    },
    title: {
        text: 'Test Chart'
    },
    xAxis: {
        categories: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    },
    yAxis: {
        title: {
            text: 'Values'
        }
    },
    series: jsonData,
  });
}

$(document).ready(function() {
 $.ajax({
    url: 'ChartData',
    type: 'GET',
    async: true,
    dataType: "json",
    success: function (jsonData) {
        alert(JSON.stringify(jsonData));    // added to check valid JSON recieved
        chData(jsonData);
    }
  });

 });

</script>

另外,我的JSON对象(我在验证器中检查过,并由url:'ChartData'返回)显示为:

def chartItems
 @tmp2 = ["{"\name"\:"\rainydays"\},{"\data"\:[8, 14, 12, 16, 13, 23, 15]}"]

logger.info(@tmp2)
  render json: @tmp2 
end

我在highcharts的网站上也浏览过这些文档,并尝试集成更多代码(例如在这个http://jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/column-basic/中找到的'plotOptions')但是尽管尝试了很多东西才能让它工作,但不幸的是没有什么对我有用。

如果有人能够提供帮助,我们将非常感激。

感谢。

1 个答案:

答案 0 :(得分:0)

数组中的数据是字符串而不是javascript对象。

[-->"<--{\"name\":\"rainydays\"},{\"data\":[8, 14, 12, 16, 13, 23, 15]}-->"<--]

我用 - &gt;“&lt; - 突出显示了违规报价。

你还有额外的括号:

[{"name\":\"rainydays\"-->}<--,-->{<--\"data\":[8, 14, 12, 16, 13, 23, 15]}]

最后,我不确定为什么你的字符串被转义了。您的最终数据需要如下所示:

[{"name":"rainydays","data":[8, 14, 12, 16, 13, 23, 15]}]

我不是一个红宝石的家伙,但我想你想要这个:

@tmp2 = [{:name=>"rainydays",:data=>[8, 14, 12, 16, 13, 23, 15]}]