2013-01-23 86 views
4

我一直在寻找一个或两个问题的答案,但我还没有找到一个。我有一个外部应用程序正在定期修改TSV文件(添加数据)。我使用的是Basic Line Chart example显示的数据,它看起来真的不错:重新加载TSV文件而不刷新页面

enter image description here

现在我希望在TSV文件被更新的数据进行更新。我希望能够对从tsv文件中提取的数据设置自动刷新,并重新填充图表而不用刷新整个页面。

我试着将当前的代码包装在一个函数中,并在该函数上调用setInterval,但每次数据都保持不变(可能是因为它被缓存了?)。

理想情况下,解决方案将是一个函数,可以调用更新,只要我想(基于用户事件,计时器,无论)。

任何想法,链接或建议的替代方法来实现相同的目标将不胜感激!

作为一个额外的问题:我知道D3可能不是这种Psudo-Real-Time数据显示的正确选择。是否有其他软件包可以帮助更多?生成数据的应用程序是一个C#应用程序(以防万一结束)。

编辑:作为一个补充说明,想象一下这个例子,但是从一个文件中读取数据:http://mbostock.github.com/d3/tutorial/bar-2.html

+0

你可以发布一些骨架代码来显示你如何使用'setInterval'和'd3.tsv'吗? –

回答

0

如果您正在执行一个Ajax调用从服务器获取数据,你认为缓存是一个问题,你可以尝试在你的代码中任何地方的jquery's ajaxSetupcache参数设置为false破坏缓存:

$.ajaxSetup({cache: false}); 

从文档:

如果设置为false,则会强制请求的页面不被 浏览器缓存。注意:将缓存设置为false只能在HEAD和 GET请求中正常工作。它通过在GET参数中附加“_ = {timestamp}”来工作。 参数对于其他类型的请求不需要,除非在IE8中对 POST发出的GET请求已被请求的URL。

+0

我正在使用示例中显示的d3函数(d3.tsv(file,callback))。不幸的是,添加你建议的命令似乎只是打破了整个页面(尽管我不能告诉你为什么...)。我的服务器甚至不显示正在请求的文件。谢谢你的想法! – user986122

+0

浏览器是否显示正在进行和正在提供的请求,可能来自缓存?通过在每次调用中将时间戳作为查询参数附加到'd3.tsv(file,cb)'中的'file',您可以达到与'$ ajaxSetup({cache:false})'相同的效果。当然,假设一个杂散查询参数不会对查询结果产生不利影响。 –

相关问题