在我继续之前,请考虑使用良好的命名约定,例如
select_sensor_data7
和变量,如
values7
是糟糕的选择。
话虽如此;看起来像是
选择传感器数据7
函数返回一个jsonencoded对象数组,即类似于以下内容(虚拟数据):
[
{"dValue": "123", "dTimeDate": "00/00/0000"},
{"dValue": "123", "dTimeDate": "00/00/0000"},
{"dValue": "123", "dTimeDate": "00/00/0000"}
]
因此,您可以在PHP函数中执行以下操作:
<?php
$valuesNight = select_sensor_data7($db, $idSensor, $date22y, $date6t);
chart_line('night', $valuesNight);
$valuesEvening = select_sensor_data7($db, $idSensor, $date6t, $date14t);
chart_line('evening', $valuesEvening);
?>
<?php function chart_line($chartId, $jsonDataSource) { ?>
<div>
<script type="text/javascript">
var dataSource = JSON.parse('<?php echo $jsonDataSource ?>');
var dValues = new Array;
var dTimeDate = new Array;
for (var i = 0; i < dataSource.length; i++) {
dValues.push(dataSource[i].dValue);
dTimeDate.push(dataSource[i].dTimeDate);
}
sessionStorage.setItem($chartId .'_myValues', JSON.stringify(dValues));
sessionStorage.setItem($chartId .'_myTime', JSON.stringify(dTimeDate));
</script>
<object type="text/html" data="chart.htm?chartId=<?php echo $chartId ?>" width="100%" height="420"></object>
</div>
<?php } ?>
然后你更新你的
chart.html
这样地:
<script type="text/javascript">
// http://stackoverflow.com/a/901144/2332336
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
// Parse chartId
var chartId = getParameterByName('chartId', location.href);
// Proceed if you have a chart id
if (typeof chartId !== 'undefined' && chartId && chartId.length > 0)
{
var myTime = JSON.parse(sessionStorage.getItem(chartId +'_myTime'));
var myValues = JSON.parse(sessionStorage.getItem(chartId +'_myValues'));
// TEST
console.log('myTime', myTime);
console.log('myValues', myValues);
}
else
{
alert('error - invalid chart id');
}
</script>
P.S.未经测试,如果您在运行此程序时遇到问题,请告诉我。