Javascript 使用格式化的AJAX返回更新Highchart系列数据
目前,我的页面上有一个Highcharts散点图,其结构如下:Javascript 使用格式化的AJAX返回更新Highchart系列数据,javascript,php,jquery,ajax,highcharts,Javascript,Php,Jquery,Ajax,Highcharts,目前,我的页面上有一个Highcharts散点图,其结构如下: $(function() { $('#container').highcharts({ /*chart options, etc... this does not change*/ series: [/*there is some default data here*/] }); }); 这张图表看起来很好,效果也很好。此外,我在页面上有几个复选框和一个按
$(function() {
$('#container').highcharts({
/*chart options, etc... this does not change*/
series: [/*there is some default data here*/]
});
});
这张图表看起来很好,效果也很好。此外,我在页面上有几个复选框和一个按钮。当按下按钮时,我有一些jQuery来查看选中了哪些复选框,并将此信息发送到一个PHP文件,该文件根据所选复选框返回一个新的数据系列。该代码如下所示:
var Obj = {};
$('button').click(function(e) {
var tableIDs = $("#boxes input:checkbox:checked").map(function() {
return $(this).val();
}).get();
var idClicked = e.target.id;
Obj.tables = tableIDs;
$.ajax({
url: 'update.php',
type: 'post',
data: {
"points": JSON.stringify(Obj)
},
success: function(data) {
console.log(data); /*for testing*/
}
});
});
这段代码位于脚本的末尾,不在我的highcharts函数的范围内。我已经前后彻底测试了AJAX,一切正常。按照PHP的设置方式,AJAX返回的格式如下:
{name: 'series1', data: [[...,...],[...,...],...]},
{name: 'series2', data: [[...,...],[...,...],...]}
不是数组,只是一个很长的字符串,里面有很多数字(为了清晰起见,我把上面的内容放在两行)。换句话说,它的格式完全符合我的Highchart的“series:”选项的要求。我的PHP返回的序列数根据选中的复选框的数量而变化
所以,我的问题是:用AJAX返回的新数据替换highchart上已经显示的默认数据的最佳方法是什么?或者,默认数据是可选的,如果它使这变得更容易,可以将其删除
有很多类似的问题摆在那里,但我似乎很难采纳其他人对我的问题的解决方案。我看过一些直接更新的解决方案,如和提出的解决方案,但我没有运气让他们将旧数据更新为新数据或插入任何数据
我特别喜欢由提出的解决方案,基本上是将数据作为变量传递给包装好的highcharts函数。这是典型的情况:
function my_chart(data) {
$('#container').highcharts({
/*chart options, etc... this does not change*/
series: [ /*there is some default data here*/ ]
});
}
然而,当我这样做时,它完全打破了我的图表,我一直无法让它正常工作和通过
任何建议/意见都将不胜感激。我就是这样做的
var chart = $('#container').highcharts();
if (chart) {
chart.series[0].setData([]);
}
这将清除图表中的数据
我只是注意到在我的代码中,我从头开始为新数据重新创建图表,但我认为这不是必要的
获得新数据后,请尝试使用
chart.series[0].setData([data]);
这部分:
不是一个数组,只是一个很长的字符串,里面有很多数字。您可以返回数组(JSON)吗?我的意思是,这是一个非常好的字符串,但Highcharts需要一个对象来处理,而不是字符串:)