更改PHP变量

时间:2015-07-08 12:51:36

标签: javascript php json csv highcharts

我在页面上有一个实时更新高亮图,index.html,调用php脚本datatest.php来解析CSV文件,将结果输出为json并将其作为新点添加图表:

$.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, 1000);  
    },
    cache: false
});

基本的PHP脚本存储"行"作为会话变量,以便每次调用脚本时,它都会解析CSV文件的下一行。 CSV文件有两列,一列用于" hi"和#34; lo"。

我尝试在页面中添加几个按钮,以便我可以动态更改php脚本返回的CSV文件列。这些按钮的代码如下:

<form method="post" action ="datatest.php">
    <input type="submit" name="HighWind" value="hi"/>
    <input type="submit" name="LowWind" value="lo"/>
</form>

图表运行完美,并使用默认(低)值更新,但是当我按下上述任一按钮时,图表就会停止。这是我的PHP代码:

<?php 
$i = 0;
session_start();

$_SESSION['line'] = isset($_SESSION['line']) ? ++$_SESSION['line'] : 0;
$_SESSION['hiorlo'] = isset($_SESSION['hiorlo']) ? $_SESSION['hiorlo'] : "lo";

$handle = fopen('WindSpeed.csv', 'r');


while(($windVals = fgetcsv($handle, 1000, ',')) && $i <= $_SESSION['line']) {
    $i++;
}
if(!$windVals) {
   $_SESSION['line'] = 0;
}

header("Content-type: text/json");
$x = time() * 1000;

$_SESSION['hiorlo'] = isset($_POST["HighWind"]) ? $_POST["HighWind"] : "Low";


//$hiorlo POST Code
if ($_SESSION['hiorlo'] == "hi") {
    $y =  (float)$windVals[0];
} else {
    $y = (float)$windVals[1];
}

// Create a PHP array and echo it as JSON
$ret = array($x, $y);
echo json_encode($ret);

header("Location: index.html"); // Return to frontend (index.html)

?>

有趣的是,当我注释掉header("Location: index.html")时,我按预期重定向到PHP脚本的json输出,这显示了正确的值,具体取决于按下了哪个按钮。但是,如果留下标题代码,则图表会在按下后停止。

非常感谢任何帮助!

谢谢, 凯文

1 个答案:

答案 0 :(得分:1)

您的方法有点不对。您似乎尝试实现动态图表刷新,因为您需要:

  1. 点击按钮
  2. 进行ajax通话
  3. 将参数传递给函数(在这种情况下为行号。可以作为状态变量存储在javascript中)
  4. 编写一个函数,从图表中删除以前的数据/点并添加新点。
  5. 这应该是我通常遵循的图表和动态数据推送的方法。