将数据分配给JQplot图表使用jquery动态获取数据的问题

时间:2011-09-05 09:16:12

标签: jquery jqplot jquery-get

我正在尝试执行以下操作:从后端获取一些数据并将其与JQplot烛台图表绑定。

我所取得的成就:

  • 正在后端生成数据
  • 使用jQuery的$ .get()函数获取数据。

所以这是问题所在:

数据,如果我通过执行以下操作将其绑定到变量:

CASE I_
ohlc = [['2011-01-03 09:30:00',325.7,325.99,324.82,325.39],['2011-01-03 09:35:00',325.44,326.74,325.4,326.46],['2011-01-03 09:40:00',326.54,327.38,326.38,327.23]];

case 1 log screenshot

它像微风一样。

但是当我使用

CASE II_
$.get('MYSERVLET', function(data){
ohlc = data;
});

Case 2 log screenshot

并生成图表,我在控制台上收到错误消息:

Uncaught #<Object>
init
w.jqplot
(anonymous function)
jQuery.event.handle
jQuery.event.add.elemData.handle.eventHandle

当我在CASE I中执行console.log时,我将它们作为数组。但在CASE II中,它看起来像普通数据。我不知道是否有任何帮助,但我注意到了这一点。

有谁知道如何解决这个问题?我做错了什么?

3 个答案:

答案 0 :(得分:1)

对于jqplot,数据必须采用数组形式。您可能必须检查在案例2中获得的数据格式是什么。如果它不是数组格式,那么在$ .get函数内部,您可能必须编写一些自定义代码,将其转换为数组格式。

CASE II_
$.get('MYSERVLET', function(data){
var temp = data;
//code to convert data to array format
//populate ohlc.
});

编辑:

可以使用2 for for循环生成类似于第一种情况的数组

ohlc=[];
for(int l1=0;l1<data.length;l1++)
{
var temp = [];
for(int l2=0;l2<data[l1].length;l2++)
{
temp.push(data[li][l2]);
}
ohlc.push(temp);
}

正如Shortstick建议的那样,只有在从get方法返回数据后才能绘制图表。

答案 1 :(得分:1)

记住get是异步的,确保在初始化图形之前完成加载数据,你必须设置async = false以确保它返回内联。

如果这不是问题那么它将是如何返回数据结构。尝试使用json保留数组等。

答案 2 :(得分:0)

var line1=[];
for( var j = 0; j < list.length; j++){//creates the rows in the table based on the amount of videos
    x = table.insertRow(-1);    //inserts the cells into the row
    x.insertCell(0).innerHTML = list[j][0];                             
    x.insertCell(1).innerHTML = list[j][2];         
    //x.insertCell(2).innerHTML = list[(j)][5];
    //x.insertCell(2);  
    line1.push([j,1]); 
}