2012-07-11 74 views
1

我使用jqPlot,因爲我找不到一個像樣的地方來找出如何通過JSON發送多個系列到jqplot,我會盡力解決它。如何從.ajax調用中返回兩個JSON數組?

所以這裏有一個小背景:

現在,我可以打電話給我的servlet和與我打算在圖表中顯示的數據返回JSON陣列。

AJAX調用

$.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); 
      } 
     }); 

SERVLET

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()); 

} 

這樣做是返回字符串:

[ 「2000年7月6日」,」 22.0 「],[」 2000" 年8月6日, 「20.0」],[ 「2003年8月6日」, 「15.0」],[ 「2005年8月6日」, 「35.0」],[」 08/06/2007「,」12.0「],[」08/06/2010「,」10.0「],[」08/06/2012「,」10.0「]]

因此,在變量「座標」,並使用這些用繪製jqPlot圖:

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

至此一切都很正常,現在來我想要實現:

如果我硬編碼一個字符串,象徵着另一個陣列內的兩個數組,如下所示:

[[["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來繪製圖表中兩條不同的線條!所以,我試圖做同樣的,返回一個String酷似一個通過servlet:

不工作SERVLET

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調用嗎?或者有沒有辦法將兩個JSON arrays.toString()還給我的表單並將它們存儲在一個變量中?或者,也許我需要兩個變量?

+1

您是否嘗試用''[''和'']''包裝輸出?請注意,您需要它作爲JSON數組。 – TheZ 2012-07-11 20:57:25

+0

那是IT,花費在soooooooo基礎上的東西。謝謝 – Myy 2012-07-11 21:09:29

+0

如果它在以前工作,並且您改變了某些事情,請始終檢查您剛纔在邏輯上進行了更改的位置。這很可能是罪魁禍首:) – TheZ 2012-07-11 21:13:51

回答

7

當您撥打response.getOutputStream().print()時,您未將外部陣列括號中的兩個子陣列包含在內。

試試這個:

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

如果在硬編碼數組的代碼工作,那麼這應該工作。

+0

感謝pb2q,就是這樣,我很感激! – Myy 2012-07-11 21:10:28