1

http://www.jqplot.com/tests/data-renderers.phpで説明されているように、jqPlot「AJAXJSONデータレンダラー」を使用しています。
私のサーバー側はSpringMVCです。サーバー上で、Object [] []のマトリックスをレンダリングします。マトリックスの各行には、[LocalTime.toString( "HH:mm")、Integer]の2つのオブジェクトが含まれています。応答は「@ResponseBody」として返されます<p>データがサーバーから取得されていることがわかります。アラートに表示すると、次のように表示されます。

[["09:00",5],["09:30",5],["10:00",5],["10:30",5],["11:00",10],["11:30",10],["12:00",10],["12:30",10],["13:00",5]]

List<List<Object>>配列の代わりに 使ってみました。私はそれを動作させることができません。私が得るのは空のチャートだけです。これがjavascriptです:

<script>
    $(document).ready(function(){
      var ajaxDataRenderer = function(url, plot, options) {
        var ret = null;
        $.ajax({
          async: false,
          url: url,
          dataType:"json",
          success: function(data) {
            ret = data;
          }
        });
        alert("OUT: " + ret);
        return ret;
      };
       var jsonurl = "chartData";

      var plot2 = $.jqplot('chart', jsonurl,{
        dataRenderer: ajaxDataRenderer,
        dataRendererOptions: {
          unusedOptionalUrl: jsonurl
        }
      });
    });
</script>

私はここでjqPlotのJSONを見ましたが、誰もが文字列を作成して解析することを提案しています。これが唯一の方法ですか?
同様の質問をいくつか確認しましたが、答えが見つかりませんでした。
ヒントをいただければ幸いです…</p>

4

2 に答える 2

2

この質問は何年も前に尋ねられたので、あなたはもう先に進んだと思います...しかし私もこれを探していました...そしてちょうど答えを見つけました。ええと...答え。

問題は、日付を入力するとajaxDataRendererから返されるものがjsonのように見えなくなることです。理由はわかりませんが、dataTypeをtextに変更すると、アラートによってデータが出力されます。ただし、文字列を処理するように設定されていないため、グラフは失敗します。

したがって、次のように、evalを使用して、jsに文字列を実際の配列に変換させます。

var ajaxDataRenderer = function(url, plot, options) {
     var ret = null;

     $.ajax({
      // have to use synchronous here, else the function
      // will return before the data is fetched
      async: false,
      url: url,
      dataType:"text",
      success: function(data) {
          ret = data;
          }
    });

    //clear out the loading message from the div
    $('#chartdiv').empty();
    //evaluate the returned string...to turn it into the data structure.
    return eval(ret);
};

とにかくこれは私のために働いた。次に、データを表すテキストを返すURLを作成しました。

これが他の誰かがこれに対する答えを探しているのを助けることを願っています!

于 2012-07-17T15:34:42.600 に答える
0

このサンプルjsfiddleは、あなたの場合、プロットに入るデータがどのように見えるかを示しています。

x軸で時間(日付)を使用しているので、チャートにそれをレンダリングする方法を指示する必要があり、それを使用してそれを行うより良い方法はありませんDateAxisRenderer。以下のコード(これもサンプルにあります)は、それがどのように行われるかを示しています。

    axes: {
        xaxis: {
            label: "x label",
            renderer: $.jqplot.DateAxisRenderer,
            tickOptions:{formatString:'%H:%M'}
        }
    }
于 2012-05-11T08:19:35.677 に答える