Javascript 使用格式化的AJAX返回更新Highchart系列数据

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*/] }); }); 这张图表看起来很好,效果也很好。此外,我在页面上有几个复选框和一个按

目前,我的页面上有一个Highcharts散点图,其结构如下:

  $(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需要一个对象来处理,而不是字符串:)