首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用HighCharts ()函数从JSON字符串中设置setData数据

使用HighCharts ()函数从JSON字符串中设置setData数据
EN

Stack Overflow用户
提问于 2014-10-21 10:09:39
回答 1查看 1.2K关注 0票数 1

我尝试用来自一个成功的ajax响应的数据用setData()方法更新一个setData()

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: "createHighChartsContent.do",
    data: "document=Test",
    success: function(data) {           
        data = JSON.parse(data);
        console.log(data);
        $("#chart01").highcharts().series[0].setData([data]);
    }
});


<div style="font-size: 2px; font-family: Verdana; margin-bottom:0px;">  
    <div id="chart01" style="height: 732px; margin: 0 auto"></div>   
</div>

创建响应的servlet如下所示:

代码语言:javascript
复制
protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) {    
        String json = new Gson().toJson("{x:1406199133117,y:5,name:'Test'}");
        try {
            resp.getWriter().write(json);
        } catch (IOException e) {
            e.printStackTrace();
        }
}

问题:

HighChart实例没有更新。

如果我尝试手动设置ajax响应中的数据:

代码语言:javascript
复制
$j("#chart01").highcharts().series[0].setData([{x:1406199133117,y:5,name:'Test'}])

它正像预期的那样工作。

这里出什么问题了?

编辑:

因此,是的,JSON字符串无效。我尝试使用SteveP更改,但它不起作用。

我认为主要的问题是setData()需要一个具有有效JavaScript 对象的数组。

以下代码正在工作:

代码语言:javascript
复制
var s = {x:1406199133117,y:5,name:'Test'};
console.log(s);
var arr = [];
arr.push(s);
$("#chart01").highcharts().series[0].setData(arr);

JavaScript控制台显示Object {x: 1406199133117, y: 5, name: "Test"}

我没有让它从ajax数据响应中创建这样一个对象。

HighChart是这样创建的:

代码语言:javascript
复制
$("#chart01").highcharts({
       chart: {
          //renderTo: "chart01",
          type: 'bar'
       },
       title: {
         text: ''
       },
       xAxis: {
          type: 'datetime',
          dateTimeLabelFormats: {
             week: '%e. %b %Y'   
          },
          offset: 10,
          maxZoom: 7 * 24 * 3600000 // seven days
       },
       yAxis: {
          title: {              
             text: 'Defects Count'              
          },
          minTickInterval: 1
       },
       plotOptions: {
          series: {
             stacking: 'normal'
          }              
       },
       series: [              
            { name:'Test', data: [] }
       ]
    });
EN

回答 1

Stack Overflow用户

发布于 2014-10-21 11:56:47

我不能百分之百确定这里到底出了什么问题,但有几件事我很担心。

首先,您的JSON无效。x,Y和姓名应引用:

代码语言:javascript
复制
{ "x": 1406199133117, "y": 5, "name": "Test" }

我关注的是:

代码语言:javascript
复制
String json = new Gson().toJson("{x:1406199133117,y:5,name:'Test'}");

为什么不直接写字符串呢?

代码语言:javascript
复制
resp.getWriter().write("{\"x\":1406199133117,\"y\":5,\"name\":'Test'}");

最后,我将返回整个数组,包括[]大括号,而不是将它们添加到客户机中。

希望其中的一些帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26484137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档