Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态更新pointStart和pointInterval_Javascript_Highcharts - Fatal编程技术网

Javascript 动态更新pointStart和pointInterval

Javascript 动态更新pointStart和pointInterval,javascript,highcharts,Javascript,Highcharts,我使用highcharts显示每日统计数据,我希望用户能够选择日期范围 function requestData(chart, from, to, group) { $.ajax({ url: '/stats/chart?from='+from+'&to='+to+'&group='+group, success: function(data) { chart.series[0].setData(data.data)

我使用highcharts显示每日统计数据,我希望用户能够选择日期范围

function requestData(chart, from, to, group) {
    $.ajax({
        url: '/stats/chart?from='+from+'&to='+to+'&group='+group,
        success: function(data) {
            chart.series[0].setData(data.data);
            chart.series[0].pointStart = data.start;
            chart.series[0].pointInterval = data.interval;
        },
        cache: false
    });
}
js函数执行ajax调用,并将返回如下内容:-

{
"start":1358467200000,
"interval":86400000,
"data":[24,9,46,66,19,93,11,10,66,75,70,52,35,91,69,0,50,24,5,14,83,9,26,5,53,32,27,30,34,25,57,100]
}

如何更新图表的pointStart和pointInterval值?

图表。系列[0]
没有可编辑的
pointStart
pointInterval
属性。您需要通过动态方法(如
chart.series[0].setData()
)分配这些值,并创建一个完整的
options
对象(现在您只发送值
data.data
,该值是函数可接受的参数,但它也可以接受一个对象,并且用于)

我建议更改json对象以匹配
options
对象的形式:

{
    "pointStart":1358467200000,
    "pointInterval":86400000,
    "data":[24,9,46,66,19,93,11,10,66,75,70,52,35,91,69,0,50,24,5,14,83,9,26,5,53,32,27,30,34,25,57,100]
}

然后将json对象直接发送到
chart.series[0].setData(data)

我编辑了原始问题,以显示一个解释该问题的JSFIDLE示例,但我将提供一个有效的解决方案

在我的解决方案中,图表不必完全重新初始化,但所有系列都将被删除,然后通过
chart.addSeries()
方法添加新系列。我觉得
Series.setData()
会更有效率,但我不知道如何让它工作——也许有人会

我当前的解决方案(糟糕透了):

因此,在对原始海报的回答中,正如@jacobdolton的回答所述,您必须更改json对象以匹配
options
对象的形式,然后将这些对象提供给
Chart.setData()
函数


此外,您可能会注意到
false
参数
Series.remove(false)
Chart.addSeries(false)
-这些参数确保在每次调用时不会重新检索图表,并且之后可以调用单个
Chart.redraw()
,以保存处理过程。

自Highcharts 3以来,您可以使用:


您当前的
成功
功能的结果是什么?当您
console.log(data)
在其中时会发生什么?服务器是否在响应的标题中设置了mimetype?绘制了新的绘图,但轴标签没有更改为正确的日期。我使用头类型Content type:application/json.ok返回数据,因此对象返回并被正确识别和解析为json,这意味着这几乎肯定是一个highcharts问题。尝试使用动态方法。
chart.series[0].update({
    pointStart: data.start
    pointInterval: data.interval,
    data: data.data
}, false); // true if you want redraw