javascript - jqPlot 图表——不显示 ajax 数据

标签 javascript spring-mvc jqplot

我正在使用 jqPlot“AJAX JSON 数据渲染器”,如以下所述:http://www.jqplot.com/tests/data-renderers.php .
我的服务器端是Spring MVC。在服务器上,我渲染了一个 Object[][] 矩阵,矩阵的每一行包含 2 个对象:[LocalTime.toString(“HH:mm”), Integer]。响应返回为“@ResponseBody”

我可以看到数据是从服务器检索的,当我在警报中显示它时,我看到以下内容:

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

我在这里看到了JSON for jqPlot每个人都建议构建一个字符串并解析它。这是唯一的方法吗?
我还查看了几个类似的问题,但找不到答案。
将不胜感激任何提示......

最佳答案

很久以前就有人问过这个问题,所以我想你现在已经开始了……但我也在寻找这个问题……并且刚刚找到了答案。嗯...一个答案。

问题是,当您输入日期时,您从 ajaxDataRenderer 传回的东西看起来不再像 json。我不知道为什么,但是如果您将 dataType 更改为文本,那么您的警报将输出数据。但是图表失败了,因为它没有设置为处理字符串。

所以....你使用 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 以返回代表数据的文本。

希望这可以帮助其他人寻找这个问题的答案!

关于javascript - jqPlot 图表——不显示 ajax 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10536586/

相关文章:

javascript - 测试传递给 Angular Material Dialog 实例的 Controller

javascript - 在纯 JavaScript 函数中使用 jQuery 语句

javascript - 如何通过 JavaScript 聚焦 bootstrap-select 元素

java - Spring mvc - 无法打开 ServletContext 资源 [/WEB-INF/dispatcher-servlet.xml]

javascript - JqPlot系列切换

javascript - 如何模拟输入禁用?

java - 如何将对象作为 URI 行中的查询参数传递?

javascript - 将系列分配给 jqplot 中的轴

javascript - jqplot 个人点标签

通过浏览器关闭/注销时的 JavaScript 代码