Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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 更新任意图表中的股价,而不重新绘制整个图表_Javascript_Php_Jquery_Ajax_Anychart - Fatal编程技术网

Javascript 更新任意图表中的股价,而不重新绘制整个图表

Javascript 更新任意图表中的股价,而不重新绘制整个图表,javascript,php,jquery,ajax,anychart,Javascript,Php,Jquery,Ajax,Anychart,我正在玩Anychart股票烛台图表,这是非常好的,为了更新图表,我使用了setInterval函数,但它重新绘制了整个图表,这很糟糕,因为如果我缩放或做其他事情,它会重置并重新开始。有没有一种方法可以让我每隔几秒钟从数据库中更新上一个价格,而不用重新绘制整个图表 当前setInterval功能加载图表: setInterval(function() { $.get('chart_data.php', function(data) { $(".main_cont"

我正在玩Anychart股票烛台图表,这是非常好的,为了更新图表,我使用了
setInterval
函数,但它重新绘制了整个图表,这很糟糕,因为如果我缩放或做其他事情,它会重置并重新开始。有没有一种方法可以让我每隔几秒钟从数据库中更新上一个价格,而不用重新绘制整个图表

当前
setInterval
功能加载图表:

setInterval(function() {
  $.get('chart_data.php', function(data) {
     $(".main_cont").replaceWith(data);
  });
}, 2000);
My chart_数据变量:

$chart_data .= "{'x':'".$open_time."','open': ".$open.",'high': ".$high.",'low': ".$low.",'close': ".$close."},";
chart\u data.php
文件:

anychart.onDocumentReady(函数(){
//创建一个数据表
var table=anychart.data.table('x');
//添加数据
表1.addData([]);
//添加数据
//addData([{'x':'08/09/2020 10:11','open':11000,'high':10000,'low':8000,'close':8500});
//创建股票图表
var图表=anychart.stock(真);
//创建映射
var-mapping=table.mapAs({
“日期”:“日期”,
“打开”:“打开”,
‘高’:‘高’,
‘低’:‘低’,
“关闭”:“关闭”,
“填充”:“填充”
});
变量图=图表。图(0);
//使用映射添加一个系列
chart.plot(0).candlestick(mapping.name();
//设置图表的容器id
图表.集装箱(“集装箱”);
var系列=图表、绘图(0)、烛台(映射);
chart.scroller().xAxis(false);
//启动图表绘制
chart.draw();
});

我想将
setInterval
函数替换为只替换数据库中最后一个价格数据以向上或向下移动蜡烛的函数,如果添加了新记录,则绘制新蜡烛。我有更新蜡烛或添加新蜡烛的脚本。如果不重新绘制整个图表,我就找不到这样做的方法。

您可以使用的函数来更改图表

您可以使用JS每两秒钟获取一次新数据,并使用
addData()
替换现有数据。如果仍会导致完全刷新,则必须比较以确定当前数据与新获取的数据之间的差异,并使用文档中描述的
插入
删除
更新
方法仅更改更改的数据。但是,这仍然可能导致完全刷新


您可以使用AJAX(来自JS)从PHP脚本请求更新的数据。数据将返回到JS。通过发送/接收JSON格式的数据可能是最简单的。

无需重新创建图表,甚至无需重新应用整个数据。AnyStock API提供了更新部分数据所需的全部功能。该系列将自动更新。 为此,可以使用函数。它将使用复制键替换所有行,并使用该键替换最后看到的行。这意味着新的点将添加到表中,表中已有键的点将被覆盖。
因此,您只需根据映射管理密钥和应用点。有关详细信息,请查看下面的示例,该示例完全模拟了您需要的内容-

您看过文档了吗?您应该能够使用JS每两秒钟获取一次新数据,并使用
addData()
替换现有数据。如果这仍然导致完全刷新,则必须将当前图表数据与新获取的数据进行比较,并使用文档中所述的插入、删除和更新方法仅更改更改的数据。但是,这仍然可能导致完全刷新。是的,谢谢,我目前正在查询数据库以进行更新或插入。只是不知道如何在不重新绘制的情况下更新图表我认为这是我正在寻找的方法,数据流似乎是正确的方法,但是我如何使用php将DB数据添加到流中,或者JS如何处理?您可以使用AJAX(来自JS)从php脚本请求更新的数据。数据将返回到JS。可能最容易以JSON格式发送/接收数据;看好酷谢谢我想这就是我要找的,你能把它作为一个例子/答案贴出来吗?我接受它谢谢你的解释和答案!