簡體   English   中英

從PHP到JS的數據-Google日歷+ CanvasJS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM