2013-10-25 17 views
0

如果可能,我想要一些幫助。我使用highcharts來製作圖表。我有一個data.php文件生成我的數組。當我添加額外的行重定向時,Highchart不打印json

該數組由表單的動態查詢和使用json_encode創建。數組打印後:print $ array_final1; 我想重定向到頁面我有我的圖表:demo.php通過使用標題('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); 
?> 

任何幫助,將不勝感激。 謝謝

+0

我建議你應該研究一下重定向以及它們是如何工作的。 –

+0

「服務器返回位置標題作爲返回到瀏覽器的一部分,它告訴瀏覽器不要加載此頁面,而是轉到此位置。」好吧,你明白了。我可以在加載頁面後重定向到一個頁面嗎? – Thanos

+0

你確定這就是你想要做的嗎?您想要加載頁面,然後立即將瀏覽器重定向到新頁面?如果你只是要重定向,加載頁面有什麼意義? –

回答

0

當然,沒有數據導入,你沒有發送任何東西。

既然你已經在使用一個會話,爲什麼你不把你想要在另一個頁面中使用的數據放到$_SESSION

$_SESSION['array_final'] = $array_final1; 

// the redirect 

- 在demo.php -

只使用

$_SESSION['array_final'] 
+0

我只知道如何從另一個文件中讀取圖表的數據:$ .getJSON(「data.php」,函數(JSON){ \t \t \t \t options.xAxis.categories = JSON [0] [ '數據']; \t \t options.series [0] = JSON [1]; \t \t圖表=新Highcharts.Chart (選項); – Thanos

0

我有同樣的問題,因爲你,但我發現它周圍的方式。

如果我正確理解你的問題,你有一個data.php頁面,它從MySQL獲取數據並生成一個Highcharts javascript數組列表來讀取。在demo.php頁面中,您可以使用調用data.php來獲取信息的Highcharts javascript。

有沒有必要做重定向頭('位置...')。在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 = '排序',這會的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部分之後,你可以銷燬會話對象,如果我沒有錯的話。

希望這會有所幫助。