[英]Data from PHP to JS - Google calendar + CanvasJS
我想從Google日歷中獲取數據,以使Chart可以滿足您的工作量。
我的問題是我無法將數據從PHP加載到JS-> $ DataJSON不能被JS ...加載。最終腳本應計算您在會議等上花費的時間。
<?php
require_once 'google-api-php-client/vendor/autoload.php';
session_start();
$client = new Google_Client();
$client->setAuthConfigFile('client_secret.json');
$client->addScope("https://www.googleapis.com/auth/calendar");
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
$service = new Google_Service_Calendar($client);
$calendarList = $service->calendarList->listCalendarList();
?>
<form action="" method="POST" enctype="multipart/form-data">
<?php
while(true) {
foreach ($calendarList->getItems() as $calendarListEntry) {
echo '<input type="checkbox" value='.$calendarListEntry->id.' name="zasedacky[]">' .$calendarListEntry->getSummary()."</br>";
}
$pageToken = $calendarList->getNextPageToken();
if ($pageToken) {
$optParams = array('pageToken' => $pageToken);
$calendarList = $service->calendarList->listCalendarList($optParams);
} else {
break;
}
}
?>
<select name="type">
<option value="column">Column</option>
<option value="bar">Bar</option>
<option value="area">Area</option>
</select>
<input type="submit" name="submit">
</form>
<?php
if(isset($_POST['submit'])){
$type = $_POST['type'];
$zst = $_POST['zasedacky'];
if(empty($zst))
{
echo("Nevybrali jste žádnou zasedací místnost.");
}
else
{
$N = count($zst);
$data_points = array();
for($i=0; $i < $N; $i++)
{
$calendar = $service->calendars->get($zst[$i]);
$calendarJSON = array("label" => $calendar->getSummary(), "y" => "11");
array_push($data_points, $calendarJSON);
}
$dataJSON = json_encode($data_points, JSON_NUMERIC_CHECK);
echo $dataJSON;
}
}
?>
<script>
$(document).ready(function () {
var dataPoints = <?=$dataJSON ?>;
for(var i = 0; i <= result.length-1; i++)
{
dataPoints.push({label: result[i].label, y: parseInt(result[i].y)});
}
var chart = new CanvasJS.Chart("chartContainer", {
data: [
{
dataPoints: dataPoints
}
]
});
chart.render();
document.write(dataPoints);
});
</script>
</body>
<?php
} else {
$redirect_uri = 'http://localhost/calendar/oauth2callback.php';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
謝謝你的幫助
似乎您忘記了定義結果變量。 也許您打算這樣做:
<script>
$(document).ready(function () {
var result = <?=$dataJSON ?>;
var dataPoints = [];
for(var i = 0; i <= result.length-1; i++)
{
dataPoints.push({label: result[i].label, y: parseInt(result[i].y)});
}
var chart = new CanvasJS.Chart("chartContainer", {
data: [
{
dataPoints: dataPoints
}
]
});
chart.render();
});
</script>
您提供的硬編碼數據格式似乎可以正常工作。 這是JSFiddle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.