【发布时间】:2015-07-07 18:08:48
【问题描述】:
我正在使用 highcharts 创建一个动态更新数据的“实时”图表。它调用一个 php 文件,该文件应该解析 CSV 并将结果输出为 json。
我的 Highcharts/jQuery 代码是这样的:
function requestData() {
$.ajax({
url: 'datatest.php',
success: function(point) {
var series = chart.series[0],
shift = series.data.length > 20; // shift if the series is longer than 20
// add the point
chart.series[0].addPoint(eval(point), true, shift);
// call it again after one second
setTimeout(requestData, 10000);
},
cache: false
});
}
我的 datatest.php 文件是这样的:
<?php
header("Content-type: text/json");
$handle = fopen("WindSpeed.csv", "r");
$windVals = fgetcsv($handle, 1000, ",");
$x = time() * 1000;
$y = $windVals[0];
// Create a PHP array and echo it as JSON
$ret = array($x, $y);
echo json_encode($ret);
?>
但是,我不知道每次调用 php 脚本时如何传递 csv 的下一行;它不断将相同的 json 值(在 csv 的第一行)传递给 highcharts,因此它只显示一条平坦的直线。
我对此非常陌生,但有没有办法在每次调用 PHP 脚本时解析 CSV 文件的下一行?或者有更好的替代方法吗?
谢谢,
问候, 凯夫
【问题讨论】:
-
为什么不在ajax函数上使用一个计数器,每次触发该函数时加一。您将它作为参数传递给 datatest.php 并使用它来跳过已经读取的尽可能多的 csv 行?
标签: php jquery json csv highcharts