Я хочу получить данные из календаря Google, чтобы сделать график, сколько вы на работе.
Моя проблема в том, что я не могу загрузить данные из 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
Других решений пока нет …