将系列数据从Java传递到多Y轴海图

将系列数据从Java传递到多Y轴海图,java,jquery,ajax,highcharts,Java,Jquery,Ajax,Highcharts,我刚刚开始学习JQuery和Highcharts。我用静态数据创建了一个多Y轴海图。我希望能够将数据从java传递到序列数据。我该怎么做?如何使JQuery代码从java类中获取数据并将其加载到highcharts中。以下是我的代码: // MultiY.js $(document).ready(function() { chart1 = new Highcharts.Chart({ chart: { renderTo: 'chart_1',

我刚刚开始学习JQuery和Highcharts。我用静态数据创建了一个多Y轴海图。我希望能够将数据从java传递到序列数据。我该怎么做?如何使JQuery代码从java类中获取数据并将其加载到highcharts中。以下是我的代码:

// MultiY.js
$(document).ready(function() {


    chart1 = new Highcharts.Chart({
     chart: {
        renderTo: 'chart_1',
        height: 350,
     },
     title: {
        text: 'Sample Highcharts'
     },
     xAxis: {
        categories: ['4/28/2013', '4/29/2013', '4/30/2013', '5/1/2013', '5/2/2013', '5/3/2013', '5/4/2013']      
     },
     yAxis: [{
         opposite: true,
         title: {
             text: 'Cost',
             style: {
                 color: '#dbf400'
             }             
         },
         labels: {
             style: {
                 color: '#dbf400'
             }
         },plotOptions: {
            series: {
                pointWidth: 20
            }
        }
     },
     {
         lineWidth: 2,
         title: {
             text: 'Silver',
             style: {
                 color: '#89A54E'
             }
         },
         labels: {
             style: {
                 color: '#89A54E'
             }
         }
     }, {
         lineWidth: 2,
         opposite: true,
         title: {
             text: 'Gold',
             style: {
                 color: '#4572A7'
             }
         },
         labels: {
             style: {
                 color: '#4572A7'
             }
         }
     }, {
         lineWidth: 2,
         opposite: true,
         title: {
             text: 'Score',
             style: {
                 color: '#AA4643'
             }
         },
         labels: {
             style: {
                 color: '#AA4643'
             }
         }
     }],

     series: [ {
         name: 'Cost',
         type: 'column',
         color: '#dbf400',
         data: [65078.70, 70816.51, 71211.22, 56130.71, 67839.10, 59170.91, 52826.47] ,
         yAxis: 3
     }, {
         name: 'Silver',
         type: 'spline',
         color: '#89A54E',
         dashStyle: 'shortdot',
         data: [6357434, 7190915, 6737487, 6001323, 8628154, 7446175, 5953040]        
     }, {
         name: 'Gold',
         type: 'spline',
         color: '#4572A7',
         data: [2652304, 2862748, 2645867, 2506507, 2531869, 2352410, 2127584] ,
         yAxis: 1
     }, {
         name: 'Score',
         type: 'spline',
         color: '#AA4643',
         data: [57994, 68114, 64582, 26526, 52712, 55464, 46802] ,
         yAxis: 2
     }]
    });

});
My Java函数返回:

trendingData.add(new TrendingDataObjects(silver, gold, score, cost, day));
看一看。它是一个Java库,提供了一个API,您可以使用该API为Highcharts创建一个图表选项对象,其中包含您想要的任何数据,如下所示:

Options options = new Options();
options.setChartOptions(
  new ChartOptions()
    .setRenderTo("chart_1")
    .setHeight(350));
// set all your other options, including axes and data points
JsonRenderer renderer = new JsonRenderer();
String jsonString = renderer.toJson(options);
一旦您拥有了适合您需要的Java对象,您可以将其传递给Wicket或JSD组件(如果您使用这些框架中的一个,请参阅项目主页了解如何),或者您可以直接创建图表的JSON表示,如下所示:

Options options = new Options();
options.setChartOptions(
  new ChartOptions()
    .setRenderTo("chart_1")
    .setHeight(350));
// set all your other options, including axes and data points
JsonRenderer renderer = new JsonRenderer();
String jsonString = renderer.toJson(options);

这对我很有用:在文档.ready()之后。。。。进行ajax调用,并将图表创建功能放在success函数中。这样,图表将在启动时加载数据。例子: //DOM(文档)加载完成后 $(文档).ready(函数(){


}))

wicket在做什么,我已经在multy.js中做过了。就像创建轴和系列一样。我只是想从java类中获取序列数据。我真的不认为在这里使用wicket有什么好处。我的想法更像是从multy.js调用java函数,并将获取的数据分配给序列数据。您想从jQuery代码调用服务器上的Java函数,对吗?在这种情况下,您需要一些可以通过HTTP访问的服务器端JavaWeb应用程序,例如使用jQueryAjax()来调用它。例如,您可以使用JSP、JSF、Wicket或SpringMVC等java框架构建java web应用程序……我认为您可以这样做:1)使用AJAX,从jQuery可能是或get()或getJSON()。我建议使用第二个。2) 在Java类上,添加库以导出为JSON,并编码为该格式。3) 将AJAX请求连接到将返回该JSON的URL。4) 要添加新的系列使用或为现有系列使用设置新数据,我遵循了您的建议。我编写了一个ajax函数并获得了json数据。我尝试使用以下命令创建系列数据:“success:function(data){chart.xAxis[0].setCategories(data.timestamp);chart.addSeries({name:“Cost”,data:data.Cost});”,但现在图表没有加载:(data.timestamp应该是字符串数组(例如:
['a','b','c']
),和data.cost应该是一个点数数组(例如:
[123145156]
)。你确定这是你的JSON数据格式吗?你能展示一下你的JSON数据样本吗?这是JSON数据样本:““[黄金:[5395767.0,6528407.0,5575399.0],白银:[2366743.0,2544655.0,247147.0],分数:[53074.0,62970.0,61518.0],成本:[54818.3202362942.80891458198.033533],时间戳:[2013-06-022013-06-032013-06-04]“'这不是正确的JSON,所以可能没有调用AJAX成功,用测试它,你会看到。JSON的名称类似于
“gold”:[123,123,123]
,以
{
开头,以
结尾]
另外,正如我所说,时间戳应该是字符串。感谢您的输入