【问题标题】:how do I return two JSON arrays from an .ajax Call?如何从 .ajax 调用返回两个 JSON 数组?
【发布时间】:2012-07-11 13:59:30
【问题描述】:

我正在使用 jqPlot,因为我找不到一个像样的地方来了解如何通过 JSON 将多个系列发送到 jqplot,我将尝试解决它。​​

所以这里有一点背景:

现在,我可以调用我的 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);
            }   
        });

伺服器

    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" ]]

所以我将它存储在变量“坐标”中并使用这些来绘制 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 在图表中绘制两条不同的线!所以我尝试做同样的事情并通过 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() 返还给我的表单并将它们存储在一个变量中?或者也许我需要两个变量?

【问题讨论】:

  • 您是否尝试使用'['']' 包装输出?请注意,您需要它才能使其成为 JSON 数组。
  • 那是 IT,花几个小时在一些非常基础的东西上。谢谢你
  • 如果它以前有效,并且您更改了某些内容,请始终检查您刚刚在逻辑上进行更改的位置。这很可能是罪魁祸首代码:)

标签: java javascript ajax json servlets


【解决方案1】:

当您调用 response.getOutputStream().print() 时,您没有将两个子数组括在外部数组括号中。

试试这个:

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

如果你的代码在你硬编码数组时有效,那么这应该有效。

【讨论】:

  • 谢谢pb2q,就是这样,太感谢了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
相关资源
最近更新 更多