我尝试用来自一个成功的ajax响应的数据用setData()方法更新一个setData():
$.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如下所示:
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响应中的数据:
$j("#chart01").highcharts().series[0].setData([{x:1406199133117,y:5,name:'Test'}])它正像预期的那样工作。
这里出什么问题了?
编辑:
因此,是的,JSON字符串无效。我尝试使用SteveP更改,但它不起作用。
我认为主要的问题是setData()需要一个具有有效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是这样创建的:
$("#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: [] }
]
});发布于 2014-10-21 11:56:47
我不能百分之百确定这里到底出了什么问题,但有几件事我很担心。
首先,您的JSON无效。x,Y和姓名应引用:
{ "x": 1406199133117, "y": 5, "name": "Test" }我关注的是:
String json = new Gson().toJson("{x:1406199133117,y:5,name:'Test'}");为什么不直接写字符串呢?
resp.getWriter().write("{\"x\":1406199133117,\"y\":5,\"name\":'Test'}");最后,我将返回整个数组,包括[]大括号,而不是将它们添加到客户机中。
希望其中的一些帮助:)
https://stackoverflow.com/questions/26484137
复制相似问题