1

私は次のことをしようとしています: バックエンドからいくつかのデータを取得し、それを 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]];

ケース 1 ログのスクリーンショット

それはそよ風のように機能します。

しかし、私が使用するとき

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

ケース 2 ログのスクリーンショット

チャートが生成され、コンソールに次のようなエラーが表示されます。

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

また、CASE I で console.log を実行すると、配列として取得されます。しかし、CASE II では、通常のデータのように見えます。それが助けになるかどうかはわかりませんが、これに気づきました。

これを修正する方法を知っている人はいますか?私は何を間違っていますか?

4

3 に答える 3

1

jqplotの場合、データは配列形式である必要があります。ケース2で取得するデータの形式を確認する必要があります。配列形式でない場合は、$。get関数内に、配列形式に変換するカスタムコードを記述しなければならない場合があります。

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

編集:

1番目のケースと同様の配列は、2つの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メソッドからデータが返された後にのみ描画する必要があります。

于 2011-09-05T10:45:01.750 に答える
1

get は非同期であることを覚えておいてください。グラフを開始する前に、データの読み込みが完了していることを確認してください。インラインで返されるようにするには、async = false を設定する必要があります。

それが問題でない場合は、データ構造がどのように返されるかになります。配列などを保持するjsonを使用してみてください。

于 2011-09-05T10:58:16.840 に答える
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]); 
}   
于 2013-01-31T20:30:35.623 に答える