1

我想从 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));
}

谢谢你的帮助

4

1 回答 1

1

您似乎忘记定义结果变量。也许你打算这样做:

<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

于 2015-12-08T08:48:51.427 回答