当我添加额外的行重定向时,Highchart不打印json

时间:2013-10-25 11:55:17

标签: javascript php json highcharts

如果可能,我想要一些帮助。我正在使用highcharts来制作图表。我有一个data.php文件,可以生成我的数组。

数组是通过表单中的动态查询并使用json_encode创建的。打印数组后:print $ array_final1; 我想重定向到我的图表页面:demo.php使用header('location:demo.php');在下一行。

如果我添加重定向行,它会将我带到页面,但不会将数据导入图表。

data.php

<?php
session_start();

$con = mysql_connect("","","");

if (!$con) {
  die('Could not connect: ' . mysql_error());
}
$start = $_SESSION['start'];
$end = $_SESSION['end'];
$agent = $_SESSION['Agent'];

mysql_select_db("db", $con);

$query = mysql_query("QUERY";

$category = array();
$category['name'] = 'Col';

$series1 = array();
$series1['name'] = 'Total';



while($r = mysql_fetch_array($query)) {
    $category['data'][] = $r['Col'];
    $series1['data'][] = $r['Total'];  
}

$result = array();
array_push($result,$category);
array_push($result,$series1);


$array_final = json_encode($result);
$array_final1 = preg_replace('/"(-?\d+\.?\d*)"/', '$1', json_encode($result));

print $array_final1;

header('location: demo.php');

mysql_close($con);
?> 

任何帮助将不胜感激。 感谢

2 个答案:

答案 0 :(得分:0)

当然没有导入任何数据,你没有发送任何数据。

由于您已经在使用会话,为什么不将要在其他页面中使用的数据放入$_SESSION

$_SESSION['array_final'] = $array_final1;

// the redirect

- 在demo.php中 -

只需使用

$_SESSION['array_final']

答案 1 :(得分:0)

我和你有同样的问题,但我找到了解决办法。

如果我正确理解你的问题,你有一个data.php页面,它从MySQL获取数据并生成一个数组列表供Highcharts javascript阅读。在demo.php页面中,您有Highcharts javascript,它调用data.php来获取信息。

无需使用标题重定向('location ...')。在demo.php页面中,您应该生成一个存储值的会话,并在data.php中检查会话是否有值,否则执行某些操作或不执行操作。

以下是我的例子,

<?php
    if(isset($_POST['sort'])){
        $from=$_POST['SDate'];
        $to=$_POST['EDate'];
        $sTime=$_POST['STime'];
        $eTime=$_POST['ETime'];
        session_start();
        $_SESSION['start']=$from." ".$sTime;
        $_SESSION['end']=$to." ".$eTime;
        }
        ?>

我有一个按钮名称/ id ='sort',onclick将运行上面的代码。它将获取4个下拉列表的选定值并将它们附加在一起以形成开始日期/时间和结束日期/时间,然后将其存储到2个会话对象中以供使用。

现在我有data.php,

session_start();
if(isset($_SESSION['start'])){
$starter = $_SESSION['start'];
$ender = $_SESSION['end'];

$sth = mysql_query("SELECT * FROM table WHERE roomID='501' AND (dateTime BETWEEN '$starter' AND '$ender') ORDER BY recordID");
$rows = array();
$rows['name'] = 'DateTime';
while($rr = mysql_fetch_assoc($sth)) {
$rows['data'][] = $rr['dateTime'];
}

$sth = mysql_query("SELECT * FROM table WHERE roomID='501' AND (dateTime BETWEEN '$starter' AND '$ender') ORDER BY recordID");
$rows1 = array();
$rows1['name'] = 'RoomTemperature';
while($r = mysql_fetch_array($sth)) {
$rows1['data'][] = $r['roomTemp'];
}

$result = array();
array_push($result,$rows);
array_push($result,$rows1);

$help = print json_encode($result, JSON_NUMERIC_CHECK);

mysql_close($con);

}  
else{ 
//do something or nothing
}

因此,每次单击“排序”按钮时,下拉列表中选择的任何内容都存储在data.php将能够获取的会话中。如果你愿意,可以在demo.php中的Highcharts javascript部分之后销毁会话对象,如果我没有错的话。

希望这有帮助。