1

私はjqPlotを使用していますが、JSONを介して複数のシリーズをjqplotに送信する方法を見つけるための適切な場所が見つからないため、回避しようとします。

だからここに少し背景があります:

今のところ、サーブレットを呼び出して、グラフに表示するデータを含むJSON配列を返すことができます。

AJAX CALL

$.ajax({
            type:   'POST',
            cache:  'false',
            data:   params,             
            url:    '/miloWeb/PlotChartServlet',
            async:  false,
            dataType: 'json',
            success: function(series){                  
                coordinates =  [series] ;
            },
            error: function (xhr, ajaxOptions, thrownError){
                alert(ajaxOptions);
            }   
        });

サーブレット

    private void generateCoordinates(HttpServletRequest request, HttpServletResponse response) throws IOException{

    JSONArray coordinates = new JSONArray();
    try {
        coordinates = findChartCoordinatesByPatientPK();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    response.getOutputStream().print(coordinates.toString());

}

これは、文字列を返します。

[["07/06/2000"、 "22.0"]、["08/06/2000"、 "20.0"]、["08/06/2003"、 "15.0"]、["08/06/2005 "、" 35.0 "]、[" 08/06/2007 "、" 12.0 "]、[" 08/06/2010 "、" 10.0 "]、[" 08/06/2012 "、" 10.0 "]]

だから私はそれを変数'coordinates'に保存し、それらを使用してjqPlotグラフをプロットします。

var plot10 = $.jqplot ('chartdiv', coordinates);

この時点まで、すべてがうまく機能し、今私が達成しようとしていることが来ます:

次のように、別の配列内の2つの配列を表す文字列をハードコーディングすると、次のようになります。

[[["07/06/2000","22.0"],["08/06/2000","20.0"],["08/06/2003","15.0"],["08/06/2005","35.0"],["08/06/2007","12.0"],["08/06/2010","10.0"],["08/06/2012","10.0"]], [["07/06/2000","21.0"],["08/06/2000","19.0"],["08/06/2003","14.0"],["08/06/2005","34.0"],["08/06/2007","11.0"],["08/06/2010","9.0"],["08/06/2012","9.0"]]]

jQplotを取得して、チャートに2本の異なる線をプロットできます。そこで、同じことを実行して、サーブレットを介してその文字列とまったく同じ文字列を返すようにしました。

サーブレットが機能していません

    private void generateCoordinates(HttpServletRequest request, HttpServletResponse response) throws IOException{
        JSONArray coordinates = new JSONArray();
        JSONArray coordinates2 = new JSONArray();
        try {
            coordinates = VitalsBB.findChartCoordinatesByPatientPK();
            coordinates2 = VitalsBB.findChartCoordinatesByPatientPK2();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        response.getOutputStream().print( coordinates.toString() + ", " + coordinates2.toString());

    }

しかし、それは機能しません、それは私に解析エラーを与えます。では、AJAX呼び出しを変更する必要がありますか?または、2つをフォームに返しJSON arrays.toString()、それらを変数に格納する方法はありますか?または、2つの変数が必要ですか?

4

1 に答える 1

7

を呼び出すときは、2つのサブ配列を外側の配列括弧で囲んでいませんresponse.getOutputStream().print()

代わりにこれを試してください:

response.getOutputStream().print("[" + coordinates.toString() + ", " + coordinates2.toString() + "]");

配列をハードコーディングしたときにコードが機能した場合は、これが機能するはずです。

于 2012-07-11T20:57:53.550 に答える